繁体   English   中英

映射表<list<object> > 到具有最大值 object 属性的字典</list<object>

[英]Mapping List<List<Object>> to a Dictionary with maximum value of object properties

我有一个List<List<PersonTypeAccess>> PersonTypeAccess是一个 object ,它有两个属性: PersonTypeAccessType 这些都是枚举。

如果我尝试将其可视化,列表可能如下所示:

{
{ PersonType = 0, AccessType = 2},
{ PersonType = 5, AccessType = 0},
{ PersonType = 2, AccessType = 1}
},
{
{ PersonType = 6, AccessType = 1},
{ PersonType = 3, AccessType = 0}
},
{
{ PersonType = 3, AccessType = 1},
{ PersonType = 5, AccessType = 0},
{ PersonType = 8, AccessType = -1},
{ PersonType = 0, AccessType = 1}
}

我需要创建一个只有每个 PersonType 一次的Dictionary<PersonType, AccessType> ,并结合在列表中找到的最高 AccessType 值。

对于我上面的例子,那将是:

{
PersonType 0 -> AccessType 2,
PersonType 8 -> AccessType -1,
PersonType 5 -> AccessType 0,
PersonType 3 -> AccessType 1,
PersonType 6 -> AccessType 1,
PersonType 2 -> AccessType 1
}

我将如何 go 这样做?

您可以使用SelectMany来展平列表。 然后,您使用GroupByPersonType进行分组,在结果选择器中,您在单个元素上使用MaxAccessTypeint )和 select 一个包含每个PersonType及其最大AccessType的匿名类型。 最后,您使用ToDictionary将其投影字典中。

var dict = list
     .SelectMany(c => c)
     .GroupBy(
        c => c.PersonType, 
        c => (int) c.AccessType,
        (key, els) => new { 
           PersonType = key, 
           AccessType = (AccessType)els.Max()
        })
     .ToDictionary(c => c.PersonType, c => c.AcessType);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM