加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何过滤字典以获得具有唯一值的项目?

发布时间:2020-12-15 08:16:16 所属栏目:百科 来源:网络整理
导读:如果您认为我没有做过足够的研究,请先询问我 问题 刚刚遇到了业务需求,我们必须确保字典中的值是唯一的.即,我们应该过滤字典,这种过滤的结果应该具有唯一值的键值对. 顺便说一下,它是一个带字符串值和字符串键的简单字典.为了澄清更多,下面是样本输入和预期
如果您认为我没有做过足够的研究,请先询问我

问题
刚刚遇到了业务需求,我们必须确保字典中的值是唯一的.即,我们应该过滤字典,这种过滤的结果应该具有唯一值的键值对.

顺便说一下,它是一个带字符串值和字符串键的简单字典.为了澄清更多,下面是样本输入和预期输出值 –
sourceDictionary将具有如下值(仅为了表示数据,在语法上不正确) – {{“Item1”,“Item One”},{“Item11”,{“Item2”,“项目二“},{”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);


我对它做了太多的逻辑吗?或者,换句话说,有一个更简单的方法吗?

解决方法

这一行:
.Where(group => @group.Any())

是不必要的,因为你无论如何都不会得到任何空组. (也不确定’@’的含义.)

除此之外,实际上并没有更简单的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读