我想知道是否有人可以帮助我,我试图遍历一个字符串列表但只占用“:”左边的部分但不包括“:”我可以用下面的方法做到这一点但是我试图通过使用Linq来实现这一点。任何帮助将不胜感激。
List<string> Results = new List<string>();
List<string> strings = new List<string>
{
"121:sdfdsfds",
"122:sdfdsfds",
"123:sdfdsfds"
};
for (var i = 0; i < strings.Count; i++)
{
string[] tokens = strings[i].Split(':');
if (tokens.Any())
{
Results.Add(tokens[0]);
}
}
答案 0 :(得分:3)
使用Select方法(System.Linq
命名空间)
class Program
{
static void Main(string[] args)
{
List<string> strings = new List<string>
{
"121:sdfdsfds",
"122:sdfdsfds",
"123:sdfdsfds"
};
List<string> Results = strings
.Select(s => s.Split(':')[0])
.ToList();
Results.ForEach(s => Console.WriteLine(s));
Console.ReadKey();
}
}
输出:
121
122个
123
答案 1 :(得分:3)
方法链语法:
List<string> Results = strings.Select(t => t.Split(':'))
.Where(tokens => tokens.Any())
.Select(tokens => tokens[0]).ToList();
查询语法:
List<string> Results = (from t in strings
select t.Split(':')
into tokens
where tokens.Any()
select tokens[0]).ToList();
答案 2 :(得分:1)
List<string> Results = strings
.Select(item => item.Split(':').FirstOrDefault())
.Where(item => item != null).ToList();
答案 3 :(得分:1)
您可以获取字符串数组中的每个项目,将其拆分,并在select语句中返回index [0]:
var results = strings.Select(i => i.Split(':')[0]).ToList();
如果某些项目可能是空的并且您不想包含它们,则可以在string.Split方法上使用此语法:
var results = strings
.Select(i => i.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries)
.FirstOrDefault())
.Where(i => i != null)
.ToList();
答案 4 :(得分:0)
使用forEach,
strings.ForEach(x => Results.Add(x.Split(':')[0]));