首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List<Dictionary<string,object>>按键和值分组

List<Dictionary<string,object>>按键和值分组
EN

Stack Overflow用户
提问于 2022-10-12 23:11:46
回答 1查看 32关注 0票数 0

我有一个类似于以下内容的List<Dictionary<string, object>>

代码语言:javascript
复制
var myList =
            new List<Dictionary<string, object>>
            {
                new Dictionary<string, object>
                {
                    { "Name", "Bob" },
                    { "Certification", "Certification A" },
                    { "Date", "10/1/2022" }
                },
                new Dictionary<string, object>
                {
                    { "Name", "Bob" },
                    { "Certification", "Certification A" },
                    { "Date", "01/01/2022" }
                },
                new Dictionary<string, object>
                {
                    { "Name", "Bob" },
                    { "Certification", "Certification B" },
                    { "Date", "10/5/2022" }
                },
                new Dictionary<string, object>
                {
                    { "Name", "Joe" },
                    { "Certification", "Certification A" },
                    { "Date", "10/5/2022" }
                },
                new Dictionary<string, object>
                {
                    { "Name", "Joe" },
                    { "Certification", "Certification B" },
                    { "Date", "10/5/2022" }
                },
                new Dictionary<string, object>
                {
                    { "Name", "Joe" },
                    { "Certification", "Certification B" },
                    { "Date", "01/01/2022" }
                }
            };

我需要按NameCertification进行分组,这样我就可以得到以下结果:

代码语言:javascript
复制
{
    new Dictionary<string, object>
    {
        { "Name", "Bob" },
        { "Certification", "Certification A" },
        { "Date", "10/1/2022" }
    },
    new Dictionary<string, object>
    {
        { "Name", "Bob" },
        { "Certification", "Certification B" },
        { "Date", "10/5/2022" }
    },
    new Dictionary<string, object>
    {
        { "Name", "Joe" },
        { "Certification", "Certification A" },
        { "Date", "10/5/2022" }
    },
    new Dictionary<string, object>
    {
        { "Name", "Joe" },
        { "Certification", "Certification B" },
        { "Date", "10/5/2022" }
    }
};

我完全不知道如何达到这个结果,所以任何的指导都会很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 23:19:56

您可以使用它们生成的相等成员来利用值元组:

代码语言:javascript
复制
var result = myList.GroupBy(d => (Name: d["Name"], Certification: d["Certification"]))
    .Select(g => g.First()) // apply ordering if needed
    .ToList();

或者匿名类型也是如此:

代码语言:javascript
复制
var result = myList.GroupBy(d => new { Name = d["Name"], Certification = d["Certification"] })
    .Select(g => g.First()) // apply ordering if needed
    .ToList();

请注意,这将要求所有字典都有所有成员和所有值,以正确实现EqualsGetHashcode

还要注意,您可以将字典键入为Dictionary<string, string>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74048869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档