【问题标题】:Linq Group and Count in IEnumerableIEnumerable 中的 Linq 组和计数
【发布时间】:2013-06-26 11:32:04
【问题描述】:

我的控制器中有以下 LINQ 查询,它查询我的 IEnumerable 集合,当我在视图中输出结果时,分组工作,但是当我尝试在我分组的列上添加计数时,它惨遭失败。我想知道是否有人可以提供帮助,我一直在查看以前的示例,但我遗漏了一些明显的东西。

Grouped //工作正常并返回分组描述

itemdetails = (from c in db.CLIENTDETAILS
                           join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
                           where c.CLIENTNUMBER == clientNumber
                           join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
                           where i.LOCNUMBER == l.LOCNUMBER
                           select i).GroupBy(it => it.DESC).Select(grp => grp.FirstOrDefault()).OrderBy(x => x.DESC)

我尝试在 LINQ 中获取 Group 和 Count //Not working 返回错误

itemdetails = (from c in db.CLIENTDETAILS
                           join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
                           where c.CLIENTNUMBER == clientNumber
                           join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
                           where i.LOCNUMBER == l.LOCNUMBER
                           select i).GroupBy(it => it.DESC).Select(grp => new {DESC = grp.key, Count = grp.COUNT()}).OrderBy(x => x.DESC)

这给了我以下错误:- 无法将类型系统 linq iorderedqueryable 隐式转换为 system.collections.generic.ienumerable

一如既往地感谢您的帮助。

【问题讨论】:

标签: asp.net-mvc linq


【解决方案1】:

您的两个查询返回不同的数据,第一个查询返回 ItemDetail 类型的项目,而第二个查询返回匿名类型的项目。

如果你想要一个匿名类型的 IEnumerable,你需要使用 var 关键字声明它,即

var itemdetails = (from c in db.CLIENTDETAILS
                           join l in db.LOCATIONS on c.CLIENTNUMBER equals l.CLIENTNUMBER
                           where c.CLIENTNUMBER == clientNumber
                           join i in db.ITEMDETAILS on l.LOCNUMBER equals i.LOCNUMBER
                           where i.LOCNUMBER == l.LOCNUMBER
                           select i).GroupBy(it => it.DESC).Select(grp => new {DESC = grp.key, Count = grp.COUNT()}).OrderBy(x => x.DESC)

【讨论】:

  • 感谢 Lukazoid,那么为什么它允许我在第一个查询中对 DESC 列进行分组,但是当我尝试对 db.ITEMDETAILS 中的同一列进行计数时,它会返回错误?我推测是因为它不知道我的可枚举集合 itemdetails 中的计数是多少?
  • 这将取决于您使用的 ORM,它似乎无法将 .Count() 的表达式转换为 SQL 查询。
猜你喜欢
  • 2017-08-05
  • 2014-08-31
  • 2019-01-07
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
相关资源
最近更新 更多