将简单SQL查询更改为LINQ查询后提供不同的记录集
我已经用简单的SQL编写了下面的查询, 我想将其更改为使用LINQ,我已经尝试过了,但是我的LINQ查询和原始SQL语句给出了不同的记录集 简单SQL查询: 选择* 来自付款通知 其中status=3 从ApprovedById=13的ApprovedById中选择PaymentAdviceId 林克: var myPaymentAdviceList=来自db.PaymentAdvices中的pa 其中pa.Status==3 将Ap加入db。批准pa。Id等于 Ap.PaymentAdviceId 其中Ap.EmployeeId==13 orderby pa.PaidDate降序 选择pa; 我不应该用join,我想,我应该用什么将简单SQL查询更改为LINQ查询后提供不同的记录集,sql,linq,Sql,Linq,我已经用简单的SQL编写了下面的查询, 我想将其更改为使用LINQ,我已经尝试过了,但是我的LINQ查询和原始SQL语句给出了不同的记录集 简单SQL查询: 选择* 来自付款通知 其中status=3 从ApprovedById=13的ApprovedById中选择PaymentAdviceId 林克: var myPaymentAdviceList=来自db.PaymentAdvices中的pa 其中pa.Status==3 将Ap加入db。批准pa。Id等于 Ap.PaymentAdvice
var a = db.Approvals.Where( x => x.ApprovalById = 13).PaymentAdviceId;
var b = db.Paymentadvices.Where(x => x.status ==3 && a.Contains(x.Id);
.Contains生成WHERE IN,您不需要在那里加入
var a = from a in db.Approvals
where a.ApprovedById == 3
select a.PaymentAdviceId;
var b = (from p in db.PaymentAdvices
where p.Status == 3 &&
a.Contains(p.Id)
select p).ToList();
这两个都是linq,顶部是linq查询中常用的lambda表达式。我建议你习惯读/写这两种风格。大多数代码都是lambda风格的我相信下面这样的代码可以工作:
var query = from p in db.PaymentAdvices
where p.Status == 3 && db.Approvals
.Select(a => a.Id)
.Where(a => a.ApprovedById == 13)
.Contains(p.Id)
select p;
尽管值得注意的是,上面的@Scott Selby和@axrwkr解决方案在另一种形式上本质上是完全相同的。您的意思是希望在单个查询中使用它们??这是一个单独的查询,var a将推迟到执行var b,请查看生成的sql。@user1650894-实际上,堆栈溢出应该用于帮助您解决问题,并指导您找到解决方案-这对您的答案的风格要求很高