IGrouping <匿名类型:,=“”字符串=“”>不包含“”的定义,也没有扩展方法“

时间:2018-10-15 19:43:42

标签: c# asp.net linq

目标:按2列分组

错误:这将导致错误IGrouping不包含“ Sub_ID”的定义,也没有扩展方法“ SubID”接受IGrouping类型的第一个参数

代码

return db.View.Where(m => m.Mem_ID == Some_MemID && m.Last_Name.ToLower() == Search_MemLastName.ToLower()).GroupBy(t => new { t.Sub_ID, t.Mem_Seq }).OrderBy(t => t.Subs_ID);

我也尝试添加.key,但这没有帮助。 在How to order IGrouping without changing its type?IGrouping does not contain a definition for

中找不到解决方案

看了几个小时

1 个答案:

答案 0 :(得分:2)

您正在对组进行排序,并且必须通过Key访问已分组的属性:

.OrderBy(t => t.Key.Subs_ID)

编辑:如果只想按Sub_ID显示不同的元素,请添加.Select(x => x.First())以仅选择每个组的顶部结果:

return db.View
    .Where(m => m.Mem_ID == Some_MemID && m.Last_Name.ToLower() == Search_MemLastName.ToLower())
    .GroupBy(t => new { t.Sub_ID, t.Mem_Seq })
    .OrderBy(g => g.Key.Subs_ID)
    .Select(g => g.First());

使用GroupByIQueryable<T>转换为IGrouping<TKey, T>。最后的Select是将分组减少还原为单个元素。