如何在.c#中的何处包含子查询?
我的简单SQL查询是如何在.c#中的何处包含子查询?,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我的简单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 =
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表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型
有人能帮我把查询写对吗?谢谢 像这样试试
var Query1 = dbContext.deletedCards;
Query1.Where(x=> dbContext.cardInformation.Where(a=>a.country== 'NP').Contains(x=>x.cardNumber)).Select(a=>a.cardNum).ToList();
像这样试试
var Query1 = dbContext.deletedCards;
Query1.Where(x=> dbContext.cardInformation.Where(a=>a.country== 'NP').Contains(x=>x.cardNumber)).Select(a=>a.cardNum).ToList();
您没有在
方法中筛选任何内容,而方法中包含的内容也不正确,请尝试这种方法
var npCardNums = dbContext.cardInformation.Where(a => a.country == 'NP')
.Select(a => a.cardNum);
var query1 = dbcontext.deletedCards.Where(x => npCardNums.Contains(x.CardNumber));
我建议您阅读MSDN部分。您的方法中没有过滤任何内容,而方法中包含的方法也不正确,请尝试这种方式
var npCardNums = dbContext.cardInformation.Where(a => a.country == 'NP')
.Select(a => a.cardNum);
var query1 = dbcontext.deletedCards.Where(x => npCardNums.Contains(x.CardNumber));
我建议您阅读MSDN部分。您也可以使用join
var ans= from dc in deletedcards
join CI in cardInformation on dc.cardnum equals CI.cardNum
where CI.coumtry='NP' select dc
您也可以使用join
var ans= from dc in deletedcards
join CI in cardInformation on dc.cardnum equals CI.cardNum
where CI.coumtry='NP' select dc
我试过了,错误消失了,但最后在'x=>x.cardNumber'处出现了新错误,原因是:“无法将lambda表达式转换为'string'类型,因为它不是委托类型”。我修改了查询。您能试试这个吗?我试过了,错误消失了,但最后在'x=>x.cardNumber'处出现了新的错误,原因是:“无法将lambda表达式转换为'string'类型,因为它不是委托类型”我修改了查询。你能试试这个吗?看起来很管用!谢谢我一定会查看您提到的MSDN链接。:)看来成功了!谢谢我一定会查看您提到的MSDN链接。:)尽管OP要求使用子查询,但如本答案所示,采用使用联接的替代方法将导致SQL查询速度大大加快,尤其是在查询的表上设置了适当的索引时。好奇的人们可以在这里快速找到为什么联接比子查询更好的解释:尽管OP要求使用子查询,但按照本答案中的建议,采用使用联接的替代方法将导致SQL查询速度大大加快,特别是在查询表上设置了适当的索引的情况下。好奇的人们可以在这里快速了解为什么连接比子查询更好: