目标:按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
中找不到解决方案看了几个小时
答案 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());
使用GroupBy
将IQueryable<T>
转换为IGrouping<TKey, T>
。最后的Select
是将分组减少还原为单个元素。