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

时间:2015-10-27 07:54:01

标签: c# entity-framework linq

此查询有什么问题?

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'   可以找到(你错过了使用指令或程序集   引用?)

2 个答案:

答案 0 :(得分:4)

我认为您需要在.Key来电的两个地方插入.Select(...).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);

答案 1 :(得分:1)

使用这样的键:

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

请参阅this链接。