将 SQL 查询转换为 Linq 查询



我有一个SQL查询,我想转换为LINQ quyery,请帮助我!

SELECT TOP 10 UPER( C1.NAME) 
FROM CUSTOMER C1 WHERE C1.NAME LIKE 'A%' AND C1.ID NOT IN
(SELECT TOP 20 C2.ID FROM CUSTOMER C1 WHERE C1.NAME LIKE 'A%' ORDER BY C2.NAME) 
ORDER BY C1.NAME

更新

SELECT TOP 10 UPPER( C1.NAME) 
FROM CUSTOMER C1 WHERE C1.NAME LIKE 'A%' AND C1.ID NOT IN
(SELECT TOP 20 C2.ID FROM CUSTOMER C2 WHERE C2.NAME LIKE 'A%' ORDER BY C2.NAME) 
ORDER BY C1.NAME

声明为"db"的数据上下文类。对不起,我的英语不好!

对我来说

,这看起来并不太复杂,除非我读错了:

var query = from c in db.Customer
            where c.name.StartsWith("A")
            orderby c.name
            select c.name.ToUpper();
return query.Skip(20).Take(10).ToList();

很多人似乎都在将您的 SQL 直接转换为 LINQ,但看起来他们错过了复合查询的重点(以及您从具有相同 ORDER-BY 的同一表中进行选择的事实)。Skip 方法消除了对C1.ID NOT IN (SELECT TOP 20...部分的需求,因此您可以在一个 LINQ 查询中完成所有操作。

一个小注意事项:如果您的数据库不区分大小写(可能是这样),您可能需要将where c.name.StartsWith("A")替换为 where c.name.StartsWith("A", StringComparison. OrdinalIgnoreCase)不过,我不确定;我会先在没有StringComparison的情况下尝试一下。

我想你得到了答案,所以我想为你介绍一个有用的工具使您能够将 SQL 查询转换为 LINQ 查询。它的 LINQPad :

好吧,你不必! LINQPad let 以交互方式查询数据库中的数据库 现代查询语言:LINQ。 吻 再见 SQL Management Studio!

LINQPad 支持 C# 4.0 中的所有内容 和框架 4.0:

LINQ to Objects
LINQ to SQL and Entity Framework
LINQ to XML
Parallel LINQ
var result = (from o in db.Customer
             where SqlMethods.Like(o.Name, "A%")
             order by i.Name
             select o.Name.ToUpper()).Skip(20).Take(10);

我认为有更好的方法可以做到这一点,但这是我的全部努力......

:D

相关内容

  • 没有找到相关文章

最新更新