3

给定一个逗号分隔的字符串“a,b,c”,我想拆分字符串并将标记及其各自的索引选择到一个列表中。

换句话说,我想"a,b,c".Split(',')返回一个列表:

a, 1
b, 2
c, 3

我自己尝试了解决方案,但这与我得到的一样接近。当然,我只a.Index()在最后一行使用来表明我正在尝试做什么。

public class var
{
    public string Token;
    public int Index;
}

List<var> varList = "a,b,c"
                       .Split(',')
                       .Select(a => new var { Token = a, Index = a.Index() };
4

2 回答 2

2

您可以使用 的另一个重载Select.Select(Func<string, int, TResult>)它为我们提供了值的索引。

List<Var> varList = "a,b,c".Split(',')
    .Select((a, i) => new Var { Token = a, Index = i + 1 })
    .ToList();
于 2013-04-15T23:37:12.773 回答
2

您可以使用提供索引的Select的重载:

var list = "a,b,c".Split(',').Select((a,i) => new { Token = a, Index = i+1 }).ToList();

附带说明 - 我建议不要var用作类名,因为它会与C#var关键字冲突。

于 2013-04-15T23:37:23.120 回答