LINQ中的赋值错误

时间:2009-10-22 08:31:48

标签: c# linq

我正在将字符串数组更改为字典集合。

string str = "When everybody is somebody then no one is anybody";

               char[] separation = { ' ', '.', ',' };

               var splitted=str.Split(separation);

(绝对不是一个好的设计,但我希望知道逻辑)

当我构建查询

var indexed = (from i in Enumerable.Range(1, splitted.Length)
               from strn in splitted
                select new { i, strn }).ToDictionary(x => x.i, x => x.strn);

我收到了"Key already found in dictionary"。我提供枚举的唯一键 值。

1 个答案:

答案 0 :(得分:1)

不,你没有提供唯一的密钥。您正在提供:

1 When
2 When
3 When
...
9 When
1 everybody
2 everybody

...所以你要两次给“1”作为一把钥匙(如果你有这么远的话,那么你再次提供“2”作为一把钥匙。)

你实际上想要达到什么结果?如果是:1 - >当,2 - >大家等等你想要的:

var indexed = splitted.Select((value, index) => new { value, index })
                      .ToDictionary(x => x.index + 1, x => x.value);