Вложенный запрос LINQ в
Я новичок с 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 ответов
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 для его точной настройки.
тот же пример с синтаксисом метода 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))
Примечание:
даю этот ответ, потому что когда я искал ответ, я не мог найти ответ, который объясняет и то же понятие в синтаксисе метода.
поэтому в будущем это может быть полезно для людей, тех, кто сегодня искал синтаксис метода, как я. Спасибо картхик!--2-->