EF GroupBy:不包含’BriefTitle’的定义,也没有扩展方法’BriefTitle’接受类型的第一个参数

这个查询有什么问题?

var model = SessionObjectsMSurvey.ContractList .Where(y => y.ContractTitle.ToUpper().Contains(upper)) .GroupBy(g => new { g.BriefTitle, g.ContractId }) .Select( x => new { label = x.BriefTitle, id = x.ContractId.ToString() }).Take(20); 

SessionObjectsMSurvey.ContractList是一个IEnumerable集合。

这不会编译,我得到;

错误13’System.Linq.IGrouping’不包含’BriefTitle’的定义,并且没有扩展方法’BriefTitle’接受类型’System.Linq.IGrouping’的第一个参数可以找到(你是否缺少using指令或者assembly参考?)

我认为您需要在.Select(...)调用中的两个位置插入.Key.GroupBy(...)的结果是IGrouping的可查询,该接口包含.Key属性,以便您访问组的键。

 var model = SessionObjectsMSurvey.ContractList .Where(y => y.ContractTitle.ToUpper().Contains(upper)) .GroupBy(g => new { g.BriefTitle, g.ContractId }) .Select( x => new { label = x.Key.BriefTitle, // Here id = x.Key.ContractId.ToString() // And here }).Take(20); 

使用这样的键:

  label = x.Key.BriefTitle, id = x.Key.ContractId.ToString() 

看到这个链接。