#c# #sql #asp.net-mvc #linq
#c# #sql #asp.net-mvc #linq
Вопрос:
Я хочу получить записи в таблице граждан, которые имеют запись в таблице заданий, используя LINQ. Может кто-нибудь, пожалуйста, перевести это в LINQ? Спасибо!
SELECT * FROM JOB_MSTR j where j.citizen_id IN (SELECT c.citizen_id from CITIZEN_MSTR c);
Комментарии:
1. Я пытаюсь
Any
, но не могу завершить выполнение инструкции :var citizens = from j in _odb.JOB_MSTR.Any(j => j.EMP_ID == (_odb.CITIZEN_MSTR .....))
. Это незакончено, мне сейчас так стыдно, ха-ха2. Прочитайте о
Contains
ключевом слове для LINQ blogs.msdn.microsoft.com/alexj/2009/03/25 /…
Ответ №1:
Это может сделать это
ctx.JOB_MSTR.Where(x => ctx.CITIZEN_MSTR.Any(y => y.citizen_id == x.citizen_id))
Комментарии:
1. я использовал
ctx
в качестве имени varialbe для контекста вашего entity frameworkusing (EntityFoo ctx = new EntityFoo()){}
2. Мне нужен формат, подобный @lateshtclick’s (
from j in ctx.JOB_MSTR
) , так как я помещу это в переменную и верну ее для просмотра3. Я думаю, что она все еще неполная, потому что мне все еще нужно поместить ее в a
Model
в конце LINQ, например:select new CitizenModel { id = c.CITIZEN_ID, fullName = c.FNAME " " _ c.LNAME,.... };
Вот почему я путаюсь с ответом, особенно в x и y. Я не уверен, относится ли x кJOB_MSTR
и y кCITIZEN_MSTR
. Я также не вижу делярации псевдонима следующим образом:from j in ctx.JOB_MSTR
илиc in ctx.CITIZEN_MSTR
4. Спасибо @fubo! Кстати, я объявил это как
var result
, bec. это то, что я сделал со всеми своимиLINQ
s. Просто было довольно странно кодировать его таким образом, потому что я привык кодироватьLINQ
так:from j in ctx.JOB_MSTR..
. Во всяком случае, этоc
относится кJOB_MSTR
, но как мне получить доступCITIZEN_MSTR
к столбцам s? Я не могу сделать это, используя переменные x и y. FNAME и LNAME являются одним изCITIZEN_MSTR
столбцов5. Я думаю, что это другой вопрос, ваш первоначальный вопрос был
SELECT *
не о создании новогоCitizenModel
, и вы также не запрашивали синтаксис запроса, который является старомодным imo msdn.microsoft.com/en-gb/library/bb397947.aspx
Ответ №2:
var result = ( from j in ctx.JOB_MSTR
join c in ctx.CITIZEN_MSTR
on j.citizen_id equals c.citizen_id
select j).ToList();
Комментарии:
1. это больше похоже
SELECT j.* FROM JOB_MSTR j join CITIZEN_MSTR c on j.citizen_id = c.citizen_id;
на то, что не возвращает уникальные строки JOB_MSTR2. @fubo но мне нужен
LINQ
этот формат, поэтому я могу поместить его в переменную. Можете ли вы отредактировать свой ответ? Спасибо!