我有一个带有键值对的列表 acd。
var acd = zebra.Where(v => v.Key.StartsWith("alpha"));
核心价值
- alphaABC, TOP323
- alphaBCD, BIG456
- alphaDEF, TOP323
我想要的是从具有相同值的多个键中仅获取一个键(任意)。在这种情况下,1 和 3 具有相同的值。
我想得到一个如下的新列表:
- alphaABC, TOP323
- alphaBCD, BIG456
基本上只有唯一值。任何帮助?
我有一个带有键值对的列表 acd。
var acd = zebra.Where(v => v.Key.StartsWith("alpha"));
核心价值
我想要的是从具有相同值的多个键中仅获取一个键(任意)。在这种情况下,1 和 3 具有相同的值。
我想得到一个如下的新列表:
基本上只有唯一值。任何帮助?
List<KeyValuePair<string, string>> data = new List<KeyValuePair<string, string>>()
{ new KeyValuePair<string, string>("ABC", "TOP323"),
new KeyValuePair<string, string>("BCD", "BIG456"),
new KeyValuePair<string, string>("DEF", "TOP323") };
var result = (from d in data
group d by d.Value
into g
select new
{
row = g.FirstOrDefault()
}).ToList();
var items = zebra
.Where(v => v.Key.StartsWith("alpha"))
.GroupBy(pair => pair.Value)
.Select(group => group.First())
.ToArray();
foreach(var item in items)
Console.WriteLine("{0}, {1}", item.Key, item.Value);
用一个Dictionary<TKey,TValue>
var dict = new Dictionary<string,string>(zebra.Count);
foreach (KeyValuePair pair in zebra) {
if (!dict.ContainsKey(pair.Value)) {
dict.Add(pair.Value, pair.Key);
}
}
请注意,我们在这里颠倒了键和值的含义。我们pair.Value
在 中用作键dict
,因为我们想要唯一的值。
作为替代方案,您还可以将字典声明为Dictionary<string,KeyValuePair<string,string>>
并像这样添加
dict.Add(pair.Value, pair);