EF GroupBy:不包含';公文包标题';并且没有扩展方法';公文包标题';接受类型的第一个

本文关键字:公文包 标题 方法 扩展 第一个 类型 GroupBy 包含 EF | 更新日期: 2023-09-27 18:19:27

这个查询有什么问题?

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.IG分组"不包含"BriefTitle"的定义,也没有扩展方法"BriefTitle"接受类型的第一个参数'System.Linq.IGrouping'可以找到(是否缺少using指令或程序集参考?)

EF GroupBy:不包含';公文包标题';并且没有扩展方法';公文包标题';接受类型的第一个

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

请参阅此链接。