【发布时间】:2013-01-03 12:15:58
【问题描述】:
如果您认为我在提问之前没有做足够的研究,请多多包涵
问题 刚刚遇到一个业务需求,我们必须确保字典中的值是唯一的。即,我们应该过滤一个字典,并且这种过滤的结果应该具有具有唯一值的键值对。
顺便说一句,它是一个带有字符串值和字符串键的简单字典。为了更清楚地说明,以下是示例输入和预期输出值 -
sourceDictionary 将具有如下值(只是为了表示数据,语法不正确) - { {"Item1", "Item One"}, {"Item11", "Item One"}, {"Item2", " Item Two"}, {"Item22", "Item Two"} } 对于这个输入,filteredDictionary 应该如下所示 - { {"Item1", "Item One"}, {"Item2", "Item Two"} }
我提出的可行的解决方案
var sourceDictionary = serviceAgent.GetSampleDictionary(); // Simplified for brevity
var filteredDictionary =
sourceDictionary.GroupBy(s => s.Value)
.Where(group => @group.Any())
.Select(g => g.First())
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
问题 我是不是把逻辑太多了?或者,换句话说,有没有更简单的方法来做到这一点?
【问题讨论】:
-
@group.Any()中的@是什么?这是笔误吗? -
@Rotem "@" 允许您使用 C# 保留字。
-
我相信这是 ReSharper 的东西......可能是因为它认为 group 是保留关键字
-
@JTA 谢谢,不知道。
-
@Thimmarasau - 它是:msdn.microsoft.com/en-us/library/bb384063.aspx