Как включить подзапрос внутри. В C #? - PullRequest
0 голосов
/ 17 декабря 2018

Мой простой SQL-запрос

select * 
from deletedCards 
where cardNumber in (select cardNum from cardInformation 
                     where country = 'NP')

, и мне нужно написать его на C #.Я зашел так далеко:

var Query1 = dbContext.deletedCards;
Query1.Where(x => dbContext.cardInformation.Where(a => a.country== 'NP')).Select(a => a.cardNum).Contains(x => x.cardNumber);

но это показывает ошибку

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

Кто-нибудь может помочь мне правильно написать запрос?Спасибо!

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Вы ничего не фильтровали в своем методе Where, также ваш метод Contains неправильный, попробуйте этот способ.

var npCardNums = dbContext.cardInformation.Where(a => a.country == 'NP')
                                          .Select(a => a.cardNum);
var query1 = dbcontext.deletedCards.Where(x => npCardNums.Contains(x.CardNumber));

Я предлагаю вам прочитать Language Integrated Query(LINQ) раздел на MSDN.

0 голосов
/ 18 декабря 2018

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

    var ans= from dc in deletedcards 
    join CI in cardInformation on dc.cardnum equals CI.cardNum
    where CI.coumtry='NP' select dc
0 голосов
/ 17 декабря 2018

Попробуй вот так.

var Query1 = dbContext.deletedCards;
Query1.Where(x=> dbContext.cardInformation.Where(a=>a.country== 'NP').Contains(x=>x.cardNumber)).Select(a=>a.cardNum).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...