2013-03-12 6 views
0

Я хочу сделать подзапрос с linq, но он не работает. :-(Я искал Google для ответа, но я не знаю, как решить эту проблему.Подзапрос с linq

Это мой SQL

string strSQL = @"SELECT a.ident, a.ben1 
       FROM pwdata a 
       WHERE a.iid = (SELECT max(b.iid) FROM pwdata b WHERE b.ident = a.ident)"; 

Вот как я пытался сделать с Linq, но это это не правильный путь

var query = from i in maxxContext.pwdata 
      where i.IID = (SELECT max(b.iid) FROM pwdata b WHERE b.ident = a.ident) 
      orderby i.ident 

      select new CompareParts 
      { 
       PartNumber = i.ident, 
       PartName = i.ben1 
      }; 
      return query.ToList().Distinct(); 

Может кто-нибудь из вас мне помочь?

+0

Запрос максимальное значение во временную переменную, а затем использовать его в окончательном запросе. – GalacticCowboy

ответ

2

это не понятно, почему вы начали смешиваясь LINQ с регулярной SQL. это не работает так.

Это должно работать, хотя:

var query = from i in maxxContext.pwdata 
      where i.IID == (pwdata.Where(b => b.ident == i.ident) 
            .Max(b => b.iid)) 
      orderby i.ident 
      select new CompareParts 
      { 
       PartNumber = i.ident, 
       PartName = i.ben1 
      }; 

В качестве альтернативы, вы можете сделать присоединиться:

var query = from i in maxxContext.pwdata 
      join b in pwdata on i.ident equals b.ident into bs 
      where i.IID == bs.Max(b => b.iid) 
      orderby i.ident 
      select new CompareParts 
      { 
       PartNumber = i.ident, 
       PartName = i.ben1 
      }; 
+0

Спасибо за помощь, но она по-прежнему не работает. :-( – Jocelyn

+0

var query = from i in maxxContext.pwdata где i.IID == (maxxContext.pwdata.Where (b => b.ident == i.ident) .Max (b => b.IID)) OrderBy i.ident выбрать новые CompareParts { PartNumber = i.ident, PartName = i.ben1 }; – Jocelyn

+0

@Jocelyn: Ну, что дал нам больше нет информации о том, что случилось, я не могу без больше. Если вы представляете больше кода, я предлагаю вам отредактировать свой вопрос - комментарии не подходят для представления кода. –

Смежные вопросы