split + substring + tolist c#Linq

时间:2016-04-20 11:22:22

标签: c# linq

我试图在单个Linq表达式中构建我的函数。

  • 我拥有的:一个字符串,其值以逗号分隔:

var values = "AA1234,AA2345,BB2345"

  • 我需要的是:这个值的列表,但只有前两个字符(' AA,BB,CC')

然后我创建了这个简单的函数:

var finalList = new List<string>();
var splitedList = previousString.Split(',').ToList();
foreach (var s in splitedList )
{
    finalList .Add(s.Substring(0,2));
}

然后我得到了结果,我也尝试转换为linq,我可以,这就是结果:

var splitedList = previousString.Split(',').ToList();
var finalList = splitedList.Select(s=> s.Substring(0, 2)).ToList();

结果也很好。

但是在一次通话中有什么方法可以简化这一点吗?

我尝试了一些命令,但他们没有工作:

var finallist = previousString.Split(',').ToString().Substring(0,2).ToList();
var finallist = previousString.Split(',').ToString().Take(2);
var finallist = previousString.Split(',').ToString().Take(2).ToList();

也许是不可能的,

谢谢大家。

2 个答案:

答案 0 :(得分:3)

如果没有特殊原因,您无需致电ToList()

var values = "AA1234,AA2345,BB2345";

var splitedList = values
  .Split(',')
  .Select(s => s.Substring(0, 2))
  .ToList();

ToList()将创建List<string>,而Split(',')将生成string[]。两者都实现IEnumerable,这使得ToList()不必要,因为Select()只需要IEnumerable

答案 1 :(得分:0)

这应该有效:

var finalList = previousString.Split(',').Select(s => s.Substring(0, 2)).ToList();