我有一个对象列表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#做到这一点?
答案 0 :(得分:3)
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
}
这仅仅是无法正常工作的伪代码,可以使您步入正轨 实际上它可能有效,但我尚未对其进行测试。
答案 1 :(得分:1)
尝试下面的代码,它将为您提供每个地区及其缺失订单的结果
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)) });