LINQ подзапрос IN - PullRequest
       22

LINQ подзапрос IN

7 голосов
/ 13 августа 2010

Я новичок с IQueryable, лямбда-выражениями и LINQ в целом.Я хотел бы поместить подзапрос в предложение where следующим образом:

Пример кода:

SELECT * FROM CLIENT c WHERE c.ETAT IN (
 SELECT DDV_COLUMN_VAL FROM DATA_DICT_VAL
 WHERE TBI_TABLE_NAME = 'CLIENT' AND DD_COLUMN_NAME = 'STATUS'
           AND DDV_COLUMN_VAL_LANG_DSC_1 LIKE ('ac%'))

Как мне перевести это в LINQ?

Ответы [ 4 ]

13 голосов
/ 13 августа 2010
var innerquery = from x in context.DataDictVal
                 where x.TbiTableName == myTableNameVariable
                    && x.DdColumnName == "Status"
                    && x.DdbColumnValLangDsc1.StartsWith("ac")
                 select x.DdvColumnVal;

var query = from c in context.Client
            where innerquery.Contains(c.Etat)
            select c;
4 голосов
/ 13 августа 2010
from c in db.Client
where (from d in db.DataDictVal 
       where d.TblTableName == "Client" 
         && d.DDColumnName == "Status"
         && dd.DdvColumnValLandDsc1.StartsWith("ac"))
       .Contains(c.Etat)
select c;
1 голос
/ 13 августа 2010

Если вы новичок в Linq, вам абсолютно необходимы два основных инструмента.Первый - это инструмент, который преобразует большинство операторов T-SQL в Linq и называется Linqer (http://www.sqltolinq.com/).Это должно позаботиться о запросе в вашем вопросе.Другой инструмент - LinqPad (http://www.linqpad.net/).Это поможет вам выучить Linq во время практики с запросами.

Я часто использую Linqer для преобразования запроса T-SQL, а затем использую LinqPad для его точной настройки

0 голосов
/ 17 мая 2017

Тот же пример с синтаксисом метода Linq:

var innerquery =  dbcontext.DataDictVal                  
                 .where(x=> x.TbiTableName == myTableNameVariable
                    && x.DdColumnName == "Status"
                    && x.DdbColumnValLangDsc1.StartsWith("ac"))
                 .select(x=>x.DdvColumnVal)

var query = dbcontext.Client
            .where( c=>innerquery.Contains(c.Etat))

Примечание:

Предоставляю этот ответ, потому что когда я искал ответ, я не мог найти много ответов, объясняющих ту же концепцию в синтаксисе метода.

Так что в будущем это может быть полезно для людей, тех, кто интенсивно искал синтаксис метода сегодня, как я. Спасибо Картик

...