【问题标题】:Retrieving data from the table using LINQ to SQL使用 LINQ to SQL 从表中检索数据
【发布时间】:2014-03-21 15:41:26
【问题描述】:

我想知道用于从数据库中检索一个特定表的数据的所有 Select 语句。 我使用了 .First 和 .FirstOrDefault 它给了我想要的结果,但是当我使用 .Last 时它会抛出一个错误。我的感觉是 .First 给了我们表格的第一行,所以为什么 .Last 中的错误以及我们使用的原因.FirstOrDefault 因为 .First 肯定会给我们第一行所以为什么要使用 .FirstOrDefault 以及它的默认值是什么,因为它用于远离任何异常,请让我知道其他函数以及检索数据从表。 我用过

var val=db.AccountBank .First();//gives me the Result
var val1=db.AccountBank .Last();//gives me the following error

LINQ to Entities 无法识别方法 'Invoice.AccountBank LastAccountBank' 方法,并且该方法无法转换为商店表达式。

【问题讨论】:

    标签: c# asp.net asp.net-mvc linq


    【解决方案1】:

    您必须使用 orderby decending 和 Take(1),因为 Linq 无法将 Last() 转换为任何有效的 sql 语句。

    AccountBank.OrderByDescending().Take(1).SingleOrDefault();
    

    【讨论】:

    • 但是为什么呢??我什至可以通过 AccountBank.ToList().Last();还有
    • 我也需要其他功能
    • 当您使用ToList().Last() 时,将从数据库中获取记录,然后选择最后一条。如果您执行 First 或 FirstOrDefault 查询将使用 TOP 1 来检索记录。
    • 是的,但要从数据库中检索它只是正确的?所以为什么不以 .Last() 在我的感觉中 .First() 它必须获取第一行和 .Last( ) 它必须从表中获取最后一行
    • 不幸的是 LINQ to SQL 不能这样工作。正如 Nilesh 所说,使用 .ToList().Last 将数据“缓存”到一个列表中,然后从中选择最后一个。这可能会也可能不会解决您的问题,尤其是在您使用大量数据时。您只需要考虑一下您需要哪些功能并确定 LINQ 是否能够执行这些功能。如果没有,你只需要一起破解一些东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多