C# 进行拆分并将结果转换为整数的最佳方法
我有一个DB表,其中包含一个以逗号分隔的ID(INT)列表,这些ID存储为nvarchar 我有一个get方法,可以一次将它们作为列表返回。目前,我想我必须这样做: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))
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
可以直接制作成转换器
对象。但除此之外,还有一个不错的选择。