我有一个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