我简单的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);
但这显示了错误
无法将lambda表达式转换为预期的委托类型,因为该块中的某些返回类型不能隐式转换为委托返回类型
有人可以帮助我正确编写查询吗?谢谢!
答案 0 :(得分:1)
您没有在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));
我建议您阅读MSDN上的Language Integrated Query (LINQ)部分。
答案 1 :(得分:1)
您也可以使用加入
var ans= from dc in deletedcards
join CI in cardInformation on dc.cardnum equals CI.cardNum
where CI.coumtry='NP' select dc
答案 2 :(得分:0)
尝试这样。
var Query1 = dbContext.deletedCards;
Query1.Where(x=> dbContext.cardInformation.Where(a=>a.country== 'NP').Contains(x=>x.cardNumber)).Select(a=>a.cardNum).ToList();