2014-10-08 2 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(); 

Какой подход лучше? Мне нравится этот подход для запросов лучше, но меня попросили работать с синтаксисом метода, который выглядит слишком раздутым для меня.

Спасибо заранее, Лацьал

+0

Оба одинаково хороши. Синтаксис запроса будет переведен в синтаксис метода, но это незначительное влияние на производительность. –

+1

@jmcilhinney Мне интересно, как сделать часть ON, а также WHERE присоединиться к той же таблице. Спасибо за вашу помощь. – Laziale

+0

Что вы не понимаете в примерах, которые вы нашли при обыске? Этот вопрос встречается как «я не мог быть обеспокоен попытками, вы делаете это для меня». Если вы понятия не имеете, значит, вы не слишком сильно выглядели. Если у вас есть какая-то идея, что вы пытаетесь и что произошло, когда вы это пробовали? – jmcilhinney

ответ

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(); 
Смежные вопросы