【问题标题】:EF GroupBy: does not contain a definition for 'BriefTitle' and no extension method 'BriefTitle' accepting a first argument of typeEF GroupBy:不包含“BriefTitle”的定义,并且没有扩展方法“BriefTitle”接受类型的第一个参数
【发布时间】:2015-10-27 07:54:00
【问题描述】:

这个查询有什么问题?

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 指令或程序集 参考?)

【问题讨论】:

    标签: c# entity-framework linq


    【解决方案1】:

    我认为您需要在 .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);
    

    【讨论】:

    • 谢谢你。一个基本点,但我没有到达那里。
    【解决方案2】:

    像这样使用密钥:

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

    请参阅this 链接。

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多