【发布时间】:2018-11-15 13:45:36
【问题描述】:
我正在努力让我的大脑了解 LINQ Group By,并且我正在取得进展,但我的知识存在一个小缺陷。 我想按多个列进行分组,我知道我可以使用新的 {} 和一些字段进行分组。唯一的问题是,根据一些查询字符串值,我可能想也可能不想包括它们。
我有这个:
var groupByResults = items.GroupBy(i => new
{
i.Product.Season.SeasonID,
i.SourceLocation.LocationID,
i.Product.Brand.BrandID,
i.Product.Category.CategoryID,
i.Size.SizeID
});
我可能希望我的匿名对象只有第一个字段,或最后两个字段,或其他任何字段 - 取决于浏览器中已勾选哪些复选框。我正在考虑 ExpandoObject 但我正在努力如何从 i => .....
中获得关于“i”的关系正如我所问的一切,只是我还没有找到适合 Google 的短语。任何帮助将不胜感激。
【问题讨论】:
-
您可能想尝试“dynamic linq”....它很旧,但它可以工作。
-
从问题的方式来看,您很可能需要一个投影( Select() ),这将允许您选择项目的属性。 GroupBy() 正在根据某些属性从项目中创建组(它不会从对象中排除成员)。
-
使用lambda based IEqualityComparer factory,您可以使用采用
IEqualityComparer的GroupBy,并使用使用由布尔值保护的测试的lambda。