2014-10-08 78 views
-3

我怎么能这个查询语法转换方法的语法在LINQ:LINQ转换查询语法方法的语法

   return (from x in db.Table1 
        join y in db.Table1 on x.ID equals y.ID - 1 
        where Convert.ToInt32(y.ID) >= Convert.ToInt32(x.ID) 
        orderby x.Name 
        select x).Distinct(); 

哪种方法更好?我更喜欢这种查询方法,但我被要求使用看起来太臃肿的方法语法。

由于提前,Laziale

+0

两者都同样良好。查询语法将被转换为方法语法,但这是微不足道的性能影响。 – 2014-10-08 06:58:39

+1

@jmcilhinney我想知道如何做ON部分和WHERE加入同一张桌子。谢谢你的帮助。 – Laziale 2014-10-08 07:01:20

+0

你在搜索时发现的例子有什么不明白的地方?这个问题的原因是“我不会因为尝试而烦恼,你为我做的”。如果你不知道,那么你不可能真的看起来太难。如果你确实有一些想法,你尝试了什么,尝试了什么? – jmcilhinney 2014-10-08 07:04:18

回答

1
var results = db.Table1.Join 
    (
     db.Table1, 
     x=>x.ID, 
     x=>x.ID - 1, 
     (x,y)=>new{OuterTable = x, xid = x.ID, yid = y.ID} 
    ) 
    .Where(x=>Convert.ToInt32(x.yid) >= Convert.ToInt32(x.xid)) 
    .Select(x=>x.OuterTable) 
    .OrderBy(x=>x.Name) 
    .Distinct();