我有一个日历应用程序,您可以在其中选择各种产品组合 - 一项服务会根据日历日期范围获取可用日期。仅当所有选定产品在特定日期可用时,该日期才为“可用”。
class SelectedProduct
{
public int ID { get; set; }
public int Qty { get; set; }
}
class AvailableInventory
{
public int ID { get; set; }
public DateTime Date { get; set; }
}
// List of selected products from user
List<SelectedProduct> SelectedProducts;
// populated from service with all dates for all products
List<AvailableInventory> AvailableInventory;
我希望能够获取每个日期的可用库存列表,其中包含所选产品中所有 ID 的库存。
这是一个可能的解决方案的(非工作)pusdo 代码,我只是不太了解 linq 不足以使其正确
var results = List<AvailableInventory>();
foreach (var group in AvailableInventory.GroupBy(x => x.Date))
{
if (group.Contains(ALL ID's in SelectedProducts)
{
results.AddRange(group);
}
}
最佳答案
这会按日期对库存进行分组(忽略日期部分),然后仅选择包含所有选定产品 ID 的组,最后选择匹配组的所有可用库存。
var results =
AvailableInventory.GroupBy(i => i.Date.Date)
.Where(g => !SelectedProducts.Select(p => p.ID)
.Except(g.Select(i => i.ID))
.Any())
.SelectMany(g => g);
结果是 AvailableInventory
的集合。
关于c# - 获取包含所有选定产品的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24520769/