首页 > 解决方案 > LINQ to Entities 无法识别方法“<>f__AnonymousType4`1[System.String] get_Item(Int32)”

问题描述

请我正在使用 Entity Framework 处理 ASP.NET MVC 项目,我尝试使用此查询,但出现错误。

询问 :

var R = (from A in SCHOOL_DB_Context.Con.ABS where A.STG_ABS == STG && (A.DT_ABS.Month + "/" + A.DT_ABS.Year) == MONTHS[i].MONTH && A.DT_ABS.Hour == Hour select A).ToList();

错误 :

LINQ to Entities 无法识别方法 '<>f__AnonymousType4`1[System.String] get_Item(Int32)' 方法,并且此方法无法转换为存储表达式。

完整的代码是:

    var MONTHS = (from A in SCHOOL_DB_Context.Con.ABS where A.STG_ABS == STG && A.DT_ABS.Hour == Hour group A by A.DT_ABS.Month + "/" + A.DT_ABS.Year into G select new { MONTH = G.Key }).ToList();

    List<DataPoint> DATA = new List<DataPoint>();

    List<DataPoint> DTP = new List<DataPoint>();

    if (MONTHS.Count == 0)
    {

        DTP.Add(new DataPoint(null, null));

    }
    else
    {

        for (int i = 0; i < MONTHS.Count; i++)
        {

            var R = (from A in SCHOOL_DB_Context.Con.ABS where A.STG_ABS == STG && (A.DT_ABS.Month + "/" + A.DT_ABS.Year) == MONTHS[i].MONTH && A.DT_ABS.Hour == Hour select A).ToList();

            int Count = 0;

            Count = R.Count;


            //DATA.Add(new DataPoint(MONTHS[i].MONTH, Count));



            DTP.Add(new DataPoint(MONTHS[i].MONTH, Count));

        }

    }

请帮助解决这个问题?

标签: c#asp.net-mvcentity-frameworklinq

解决方案


尝试将索引器拉出辅助查询:

 var month = MONTHS[i].MONTH;

 var R = (from A in SCHOOL_DB_Context.Con.ABS  
          where A.STG_ABS == STG 
             && (A.DT_ABS.Month + "/" + A.DT_ABS.Year) == month 
             && A.DT_ABS.Hour == Hour
          select A).ToList();

您可能仍然会收到将月份和年份连接为字符串的错误 - 如果您这样做,我的下一个建议是在MONTHS查询中分别提取月份和年份并独立比较这两个值。


推荐阅读