我正在尝试使用以下代码对几个字段进行 GroupBy:
var cars = tmp.Select(a => new { a.Make, a.Model, a.Year });
cars = cars.Distinct()
.OrderBy(a => a.Make)
.ThenBy(a => a.Model);
var groupedCars = cars.GroupBy(a => new { a.Make, a.Model })
.Select(b => new { b.Make, b.Model, b.Year });
不幸的是,最后一行代码给了我错误,因为它无法识别这三个字段。
'System.Linq.IGrouping(AnonymousType#1,AnonymousType#2)' 不包含 'Make' 的定义,并且没有扩展方法 'Make' 接受类型为 'System.Linq.IGrouping(AnonymousType#1,AnonymousType) 的第一个参数可以找到 #2)'(您是否缺少 using 指令或程序集引用?)
所有三个字段(品牌、型号、年份)都是相同的错误。
任何想法如何解决这一问题?
按品牌和型号对汽车进行分组后,序列中的每个元素都是一个组。您可以通过以下方式获取该组的密钥Key
属性,这样您就可以找到该组的Make
and Model
, but Year
没有意义……每个组中都会有多辆车,而且它们的年份都可能不同。您可以使用该信息within当然是团体。例如:
var groupedCars = cars.GroupBy(a => new { a.Make, a.Model })
.Select(g => new { g.Key.Make, g.Key.Model,
MinYear = g.Min(car => car.Year),
MaxYear = g.Max(car => car.Year) });
但从根本上来说,您需要考虑这样一个事实:序列中的每个元素都是一个组,而不是一辆汽车。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)