【问题标题】:Different group by parameters according to different conditions in c#c#中根据不同条件的不同group by参数
【发布时间】:2018-11-01 04:40:15
【问题描述】:

我有一个 Person 类,其属性为 PersonId、PersonAdress、PersonSalary

当我必须应用 group by 时,我有三种不同的情况 1. 只有 PersonAdress 为 null 时 2. 只有 PersonSalary 为空时 3. PersonAdress 和 PersonSalary 都为空时。

PersonId 不能为空。

所有这些信息都在列表 List personList 中。

有人可以帮我吗?

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 目前我将主列表分为三个根据三个案例,然后根据三个案例将它们单独分组,然后再次将三个列表与 distinct 组合以避免冗余。

标签: c# linq lambda group-by


【解决方案1】:

您必须定义一个匿名 lambda 来定义分组。但您也可以使用现有的方法。

List<Person> personList = ...;
var agg = personList.GroupBy(Aggregator);
foreach (var gr in agg) {
    Console.WriteLine("Group {0} has {1} persons", gr.Key, gr.Count());
}

private static int Aggregator(Person p) {
    if (p.PersonAddress == null && p.PersonSalary == null) {
        return 3;
    } else if (p.PersonSalary == null) {
        return 2;
    }
    return 1;
}

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2020-08-19
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多