首页 > 解决方案 > 如何将sql查询转换为实体框架查询

问题描述

我现在有一个 SQL,我想将其转换为实体框架查询。请检查下面的代码。这对我来说似乎有点令人困惑。任何人都可以帮我将此查询转换为 c# entityframework 样式吗?

SQL:

select  TOP 10 CAST(RIGHT(ML_ItemId, LEN(ML_ItemId) - 3) as bigint)  as PrimaryKey
from ThirdPartyData
where site_id='MLA' AND IsGapChecked  IS NULL
order by PrimaryKey DESC

C#

using (var ctx = new ML_DbEntities())
{
    var Data = ctx.ThirdPartyData.Take(10).ToList(); //how can i write query here?    
}

标签: c#entity-framework

解决方案


您想将查询转换为 LINQ。为此,我强烈推荐LINQPad。它有很多内置教程,您可以在不编译的情况下测试您的查询。如果没有看到你类中的数据类型,我无法确定ThirdPartyData,但对于这个查询,你可能想要如下。

using (var ctx = new ML_DbEntities())
{
    var data = from item in ctx.ThirdPartyData
               where item.site_id == "MLA" && !IsGapChecked.HasValue
               let PrimaryKey = item.ML_ItemId.Right(item.ML_ItemId.Length - 3) as long
               orderby PrimaryKey
               select PrimaryKey;

    var top10 = data.Take(10);
}

另外,我强烈建议不要使用ToList. 它很少需要,并且会导致严重的性能问题。


推荐阅读