进行拆分并将结果转换为整数的最佳方法

时间:2009-05-22 15:02:54

标签: c# string

我有一个DB表,其中包含以逗号分隔的ID(int)列表,这些列表存储为nvarchar。

我有一个get方法,可以在一次点击中将这些作为列表返回。目前我认为我必须做这样的事情:

List<int> ids = new List<int>();
string[] pageids = experssion.Split(separators)

foreach (string number in pageids)
{
    ids.Add(Convert.ToInt32(number));
}

有人能想出更好的方法吗?我能以某种方式完成分裂吗?

3 个答案:

答案 0 :(得分:11)

我会这样:

var ids = expression.Split(separator).Select(s => int.Parse(s));

它使用.NET 3.0的Linq扩展。作为替代方案(保存一个lambda),你也可以这样做,这可以说是不太可读:

var ids = expression.Split(separator).Select((Func<string, int>)int.Parse);

答案 1 :(得分:3)

如果您没有使用C#3.0,或者不是LINQ的粉丝,您可以使用C#2.0方式:

// This gives you an int[]
int[] pageids = Array.ConvertAll(expression.Split(separator), new Converter<string,int>(StringToInt));

// Add each id to the list
ids.AddRange(pageids);

public static int StringToInt(string s)
{
 return int.Parse(s);
}

编辑:

或者,根据康拉德的建议,甚至更简单:

int[] pageids = Array.ConvertAll<string,int>(expression.Split(separator),int.Parse);
ids.AddRange(pageids);

答案 2 :(得分:1)

使用LINQ,您可以这样做:

List<int> ids 
  = expression
  .Split(separators)
  .Select(number => Convert.ToInt32(number))
  .ToList()