0

LINQでこれを行うにはどうすればよいですか?

SQL

Where tblAccounts.AccountCode = tblAccountAssociations.ChildCode
And tblAccountAssociations.AssociationType = "DS"

これが私の試みです。問題は "assoc.AssociationType == "DS" にあるようです。結合または Where 句の一部ですか?

var customers = 
    from customer in context.tblAccounts 
    join assoc in context.tblAccountAssociations on customer.AccountCode equals assoc.ChildCode 
    where customer.AccountType == "S" and assoc.AssociationType == "DS" 
    orderby customer.AccountType 
    select new { Customer = customer, Assoc = assoc };

前もって感謝します

4

3 に答える 3

0

はい、「and」は「&&」である必要がありますが、質問に対する答えは、Linq では述語assoc.AssociationType == "DSが結合の一部ではないということです。

SQLでは、結合ステートメントの一部にすることができます

...
FROM tblAccounts c
INNER JOIN tblAccountAssociations a ON
    c.AccountCode = a.ChildCode AND a.AssociationType == "DS" 
...

しかし、Linq ステートメントでは、それを述語として追加するだけです (「and」の問題は別として)。

SQLでは、JOIN句に追加するか、別のWHERE条件に入れるかは、実行計画(パフォーマンス)の観点からは問題ありません。

于 2012-06-05T07:18:17.330 に答える
0
var customers =  
from customer in context.tblAccounts  
join assoc in context.tblAccountAssociations on customer.AccountCode equals assoc.ChildCode  
where customer.AccountType == "S" **&&** assoc.AssociationType == "DS"  
orderby customer.AccountType  
select new { Customer = customer, Assoc = assoc }; 
于 2012-06-04T05:40:49.720 に答える
0

MSDN (http://msdn.microsoft.com/en-us/library/bb311043.aspx) によると、「where」句で複数の条件を指定するには、「and」ではなく「&&」を使用します。

于 2012-06-01T21:49:44.283 に答える