我有一个SQL查询,我想转换为LINQ查询,请帮助我!
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
Datacontext类声明为“db”。 抱歉我的英语很差!
答案 0 :(得分:3)
对我来说,看起来并不太复杂,除非我读错了:
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
。
答案 1 :(得分:1)
我认为你得到了答案,所以我想为你介绍一些有用的工具 使您能够将SQL查询转换为LINQ查询。 它的LINQPad:
嗯,你不必! LINQPad让 你以交互方式查询数据库 现代查询语言:LINQ。吻 告别SQL Management Studio!
LINQPad支持C#4.0中的所有内容 和Framework 4.0:
LINQ to Objects LINQ to SQL and Entity Framework LINQ to XML Parallel LINQ
答案 2 :(得分:0)
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