Я - новичок с IQueryable, лямбда-выражениями и LINQ в целом. Я хотел бы вставить подзапрос где пункт как это:
Пример кода:
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?
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;
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;
Если вы новичок в Linq, вам абсолютно необходимы два важных инструмента. Первый - это инструмент, который преобразует большинство T-SQL запросов в Linq, называется Linqer (http://www.sqltolinq.com/
). Он должен справиться с запросом в вашем вопросе. Другой инструмент - LinqPad (http://www.linqpad.net/
). Он поможет вам изучить Linq, когда вы будете практиковаться с запросами.
Я часто использую Linqer для преобразования T-SQL запроса, а затем использую LinqPad для его тонкой настройки.