复杂的SQL Server查询到LINQ到SQL查询C#

复杂的SQL Server查询到LINQ到SQL查询C#,c#,sql,sql-server,linq,C#,Sql,Sql Server,Linq,我是LinqtoSQL的新手,我有一些复杂的sql查询 我的SQL Server查询很快就可以做到这一点:我有两个表,product(a)和productorder(b)。产品有一个金额和一个第二个金额,用于警告客户还有多少项目在进行中 在“a”中,如果我们订购5份,我们有10份。那么表a的第二个金额值是5。如果我们订购更多:5=5+更多 所以我在这里写我的T-SQL。我想要一个linq到sql UPDATE a SET a.secondamount = a.secondamount + b.

我是LinqtoSQL的新手,我有一些复杂的sql查询

我的SQL Server查询很快就可以做到这一点:我有两个表,product(a)和productorder(b)。产品有一个金额和一个第二个金额,用于警告客户还有多少项目在进行中

在“a”中,如果我们订购5份,我们有10份。那么表a的第二个金额值是5。如果我们订购更多:5=5+更多

所以我在这里写我的T-SQL。我想要一个linq到sql

UPDATE a 
SET a.secondamount = a.secondamount + b.orderedamount 
INNER JOIN b ON a.productid == b.productid 
WHERE b.status = false ;

Linq不用于更新,而是用于查询。您可以使用linq查找所有要更新的记录并准备数据,但是更新本身应该单独进行

var result = from itemA in a
             join itemB in b on itemA.productId equals itemB.productId
             where itemB.Status == false
             select new { itemA, itemB.orderedamount };

foreach(var item in result)
{
    //do update using item.itemA.secondAmount + item.orderedamount
}

您已经编写了一个SQL查询。你想把它翻译成LINQ吗?是的,这是我在旧程序中使用的代码片段。现在我必须将每个sqlcommand/reader等替换为linq到sql。我几乎用这个替换了我所有的结巴。吉拉德,对不起,我试图让你的查询可编译,并引入了另一个愚蠢的错误。我的意思是我第一次编辑就破坏了你的答案,所以我为此道歉。@IvanStoev-啊,好的,你明白了。
equals
只是一个愚蠢的错误:)哈哈。关于
连接
where
相比-我知道
连接
在原始sql的方式方面是正确的,但是如果该连接生成多个记录会发生什么?。。这就是为什么我把它改成了
Any
,特别是在这个例子中,我没有考虑性能或基数,只是你需要
itemB
select
:-)@IvanStoev-och里面,当然了,哈哈,我真傻。我最初是用join做的,后来没有检查就改变了,哈哈:)谢谢你的编辑