【问题标题】:LINQ to Entities does not recognize the method Int32 get_Item(Int32)LINQ to Entities 无法识别方法 Int32 get_Item(Int32)
【发布时间】:2011-07-11 02:56:23
【问题描述】:

我是关于实体框架和 linq 的新手。我的查询是这样的

var query = (from d in db.MYTABLE
             where d.RELID.Equals(myInts[0])
             select d.ID).Distinct();

List<int?> urunidleri = query.ToList();

执行此代码时,我收到错误消息“LINQ to Entities 无法识别 Int32 get_Item(Int32) 方法”。我该如何解决我的问题?

谢谢...

【问题讨论】:

    标签: .net linq entity-framework


    【解决方案1】:
    var firstInt = myInts[0];
    var query = (from d in db.MYTABLE
                 where d.RELID.Equals(firstInt)
                 select d.ID).Distinct();
    
    List<int?> urunidleri = query.ToList();
    

    【讨论】:

    • 好的,我明白了,但现在我遇到了不同的错误。 “此上下文仅支持原始类型('例如 Int32、String 和 Guid')”
    • @Murat,那么 myInts 中的类型是什么?将鼠标悬停在var 之前的firstInt 上以找出答案。
    • 我可以将 foreach 用于 IQueryable 对象吗?例如 foreach(var item in query){ int x = item.Value }
    • @Murat,是的,如果 MYTABLE.ID 是一个整数。
    【解决方案2】:

    您需要将您的 int 存储在一个变量中,这样 EntityFramework 就不会尝试将整个数组拉入其范围。

    var myInt = myInts[0];
    
    var query = (from d in db.MYTABLE
                 where d.RELID.Equals(myInt)
                 select d.ID).Distinct();
    
    List<int?> urunidleri = query.ToList();
    

    【讨论】:

    • 一般来说,为什么 LINQ to Entities 试图在那里调用 get_Item(Int32) ? (问题帖)。
    • 因为 C# 正在生成涉及数组的表达式树。这些表达式被EF转换成SQL,EF不知道怎么处理数组。
    【解决方案3】:

    Linq 查询最终转换为 SQL 查询,而 LINQ 不知道如何处理 Session["UserName"](获取“用户名”项)。

    解决此问题的一种常见方法是使用一个局部变量,您将为其分配 Session["UserName"] 并且您将在 Linq 查询中使用该变量...

    喜欢

    string loggedUserName = Session["LogedUsername"].ToString();
    var userdetail = dc.faculties.Where(a => a.F_UserName.Equals(loggedUserName)).FirstOrDefault();
    

    参考http://mvc4asp.blogspot.in/

    【讨论】:

    • 你确定你在这里回答了正确的问题吗? OP 根本没有提到Session,而且这个问题似乎已经有几年被接受的答案了(这并不意味着你不能向它添加一些东西,但它更可能是一个错误)。
    • 用户的答案是正确的 - 它是接受答案的同义词,并且是其简化。本质上“Linq 查询最终转化为 SQL 查询,而 LINQ 不知道如何处理”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多