Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将简单SQL查询更改为LINQ查询后提供不同的记录集_Sql_Linq - Fatal编程技术网

将简单SQL查询更改为LINQ查询后提供不同的记录集

将简单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

我已经用简单的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,我想,我应该用什么

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-实际上,堆栈溢出应该用于帮助您解决问题,并指导您找到解决方案-这对您的答案的风格要求很高