如何为每个不同的密钥添加唯一编号?
最后,我想要一个不同键的“集合”,但每个键也应该有一个值,例如, current_index_of_collection + 1
elements.SelectMany(p => p.Properties.Keys).Distinct();
示例输出:
Key value
a 1
b 2
c 3
d 4
答案 0 :(得分:1)
您在寻找Select((value, index) => ...)
吗?
https://msdn.microsoft.com/en-us/library/bb534869(v=vs.110).aspx
var dictionary = elements
.SelectMany(p => p.Properties.Keys)
.Distinct()
.Select((key, index) => new {
key = key,
value = index + 1,
})
.ToDictionary(item => item.key, item => item.value);
或者
var array = elements
.SelectMany(p => p.Properties.Keys)
.Distinct()
.Select((key, index) => new KeyValuePair<MyKeyType, int>(key, index + 1))
.ToArray();
答案 1 :(得分:1)
您可以使用具有索引字段的1-
重载:
Select
或者在您的代码中:
string[][] elements = new string[][] { new string[] { "a", "b", "a" } };
var elementsWithIndex = elements.SelectMany(p => p)
.Distinct()
.Select((p, i) => new { Key = p, Value = i + 1 });
答案 2 :(得分:1)
你可以简单地使用它。
List<string> keys = new List<string>();
keys.Add("a");
keys.Add("b");
keys.Add("c");
keys.Add("d");
keys.Add("e");
keys.Add("f");
keys.Add("g");
var fields = keys.Distinct().Select ((t,val)=> new { Key= t, Value= (val + 1)});