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

C# 进行拆分并将结果转换为整数的最佳方法,c#,string,C#,String,我有一个DB表,其中包含一个以逗号分隔的ID(INT)列表,这些ID存储为nvarchar 我有一个get方法,可以一次将它们作为列表返回。目前,我想我必须这样做: List<int> ids = new List<int>(); string[] pageids = experssion.Split(separators) foreach (string number in pageids) { ids.Add(Convert.ToInt32(number))

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

我有一个get方法,可以一次将它们作为列表返回。目前,我想我必须这样做:

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

foreach (string number in pageids)
{
    ids.Add(Convert.ToInt32(number));
}
var ids = expression.Split(separator).Select(s => int.Parse(s));
List id=new List();
string[]pageId=expersion.Split(分隔符)
foreach(页面ID中的字符串编号)
{
添加(转换为32(数字));
}
有谁能想出一个更好的方法吗?我能在拆分时完成所有操作吗?

我想这样做:

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

foreach (string number in pageids)
{
    ids.Add(Convert.ToInt32(number));
}
var ids = expression.Split(separator).Select(s => int.Parse(s));
它使用.NET3.0的Linq扩展。作为替代方案(保存一个lambda),您也可以这样做,但可能可读性较差:

var ids = expression.Split(separator).Select((Func<string, int>)int.Parse);
var id=expression.Split(分隔符)。选择((Func)int.Parse);
我想这样做:

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

foreach (string number in pageids)
{
    ids.Add(Convert.ToInt32(number));
}
var ids = expression.Split(separator).Select(s => int.Parse(s));
它使用.NET3.0的Linq扩展。作为替代方案(保存一个lambda),您也可以这样做,但可能可读性较差:

var ids = expression.Split(separator).Select((Func<string, int>)int.Parse);
var id=expression.Split(分隔符)。选择((Func)int.Parse);

使用LINQ,您可以执行以下操作:

List<int> ids 
  = expression
  .Split(separators)
  .Select(number => Convert.ToInt32(number))
  .ToList()
列表ID
=表达式
.分离(分离器)
.Select(number=>Convert.ToInt32(number))
托利斯先生()

使用LINQ,您可以执行以下操作:

List<int> ids 
  = expression
  .Split(separators)
  .Select(number => Convert.ToInt32(number))
  .ToList()
列表ID
=表达式
.分离(分离器)
.Select(number=>Convert.ToInt32(number))
托利斯先生()
如果您不使用C#3.0,或者不喜欢LINQ,可以使用C#2.0的方式:

//这会给你一个int[]
int[]pageids=Array.ConvertAll(expression.Split(分隔符),new Converter(StringToInt));
//将每个id添加到列表中
AddRange(pageID);
公共静态int StringToInt(字符串s)
{
返回int.Parse;
}
编辑:

或者,根据康拉德的建议,更简单的做法是:

int[] pageids = Array.ConvertAll<string,int>(expression.Split(separator),int.Parse);
ids.AddRange(pageids);
int[]pageids=Array.ConvertAll(expression.Split(分隔符),int.Parse);
AddRange(pageID);
如果您不使用C#3.0,或者不喜欢LINQ,可以使用C#2.0的方式:

//这会给你一个int[]
int[]pageids=Array.ConvertAll(expression.Split(分隔符),new Converter(StringToInt));
//将每个id添加到列表中
AddRange(pageID);
公共静态int StringToInt(字符串s)
{
返回int.Parse;
}
编辑:

或者,根据康拉德的建议,更简单的做法是:

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

很高兴看到你再次回答。@Joel:我尽了最大努力——但最近我有很多事情要做……这一点不会改变-(很高兴看到你再次回答。@Joel:我尽了最大努力——但最近我有很多事情要做……这不会改变的。)-(顺便说一句:我不知道pageids变量有什么用。为了让解释更清楚。我愚蠢地将拆分放在了foreach上这就是为什么你不应该尝试在一个db字段中存储多个值…它总是会困扰你。顺便说一句:我不知道pageids变量有什么用。为了让解释更清楚。我愚蠢地说将拆分放在foreach上这就是为什么你不应该尝试在一个db字段中存储多个值…它总是会困扰你。你不需要
StringToInt
包装:
int.Parse
可以直接制作成
Converter
对象。但除此之外,还有一个很好的选择。你不需要
StringToInt
wrapper:
int.Parse
可以直接制作成
转换器
对象。但除此之外,还有一个不错的选择。