【问题标题】:Find missing item in a list grouped在分组的列表中查找缺失的项目
【发布时间】:2019-10-14 23:57:50
【问题描述】:

我有一个对象列表dailySchedule,其中包含属性 Order、District 和其他属性。

public class dailySchedule
{
        public int Order { get; set; }
        public string Title { get;  }
        public string District { get;  }
        ....
}

列表中加载了这些值

每个区必须有6个订单,

var ordersValue = new List<int> {1, 2, 3, 4, 5, 6};

我想为每个区查找缺少哪个顺序。

结果必须是 0 区订单 {2,3,5,6} 12 区命令 {5,6}

如何用 linq c# 做到这一点?

【问题讨论】:

    标签: c# list linq collections


    【解决方案1】:

    这是Except()的情况:

    你可以像这样“减去两个列表”来达到你想要的结果:

    var required = new List<int>() {1, 2, 3, 4, 5, 6};
    
    var groupedByDistrict = orders.GroupBy(x => x.District);
    foreach (var group in groupedByDistrict)
    {
        var missing = required.Except(group.Select(x => x.Order).Distinct());
    
        // Do something with that informaton here
    }
    

    这只是让您走上正轨的无效伪代码 实际上它可能有效,但我还没有测试过。

    【讨论】:

    • 嗨塞巴斯蒂安,非常感谢你,它工作,就像我想要的那样。
    【解决方案2】:

    试试下面的代码,它会给你每个区的结果及其缺失的订单

            var allOrders = new List<int>() { 1, 2, 3, 4, 5, 6 };
            var result = orders.GroupBy(gp => gp.District).Select(sl =>
                new { District = sl.Key, Order = allOrders.Where(wh => sl.All(all => all.Order != wh)) });
    

    【讨论】:

    • 嗨 Harisyam,也感谢您的解决方案 :) 最好的问候。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2019-08-04
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多