2016-08-30 9 views
0

私は#演算子を使用するac#linqクエリに問題がありますが、SQLではうまく動作しますが、 C#は、テーブルとカラムがテーブルbのカラムと一致しない場合の結果への正しい方法である別の結果を返します。以下の私のSQLクエリを見てから、私のC#クエリを見てください。C#LinqクエリのテーブルA列が等しくない/計算されていないテーブルB列の結合

SELECT tba.ID,fa.accountnumber,tba.Account_Number,fa.new_legalname,tba.Legal_Name,fa.new_deliverystatusname, fa.new_deliverystatus,tba.Delivery_Charge 
     FROM [CRM_Embrace_Integration].[dbo].[CRM_Tarsus_Debtors_Accounts] tba 
     inner join CRM_MBT_GROUP.dbo.FilteredAccount fa 
     ON fa.accountnumber collate database_default = tba.Account_Number 
     where fa.new_legalname collate database_default != tba.Legal_Name 

とLINQクエリは、私がlegal_name(テーブルA)が(テーブルB)legal_nameする等しくない場合好きなSQLクエリは、正しい結果を返します。この

var sqlJoinQuery = from accCRM in todaysCRMAccounts 
            join accSQL in todaysCRMViewAccounts 
            on accCRM.Account_Number equals accSQL.accountnumber 
            where accCRM.Legal_Name != accSQL.new_legalname 
            select new { accCRM.Legal_Name, accSQL.new_legalname }; 

のように見えますが、他のテーブルです。

Linqクエリが間違った結果を返しますのでお助けください。

+0

Linqは正常に見えます。スナップショットやダミーデータを共有できますか? –

+4

sqlはタイプミスを見つけて修正しました。@ = –

+0

@MBありがとうございます。 – Papi

答えて

0

あなたのSQLは、あなたがどこが等しいかを尋ねます。 LINQは、あなたが等しいかどうかを尋ねます。私はあなたが表2に含まれていないデータを必要として、次のLINQを試してみることをお勧め

1

var result1 = (from m in db1.Table1 
       select m).ToList(); 

var result2 = (from m in db2.Table2 
       select m).ToList(); 

var finalResult = (from m in result1 
        where !(from k in result2 
        select k.Id).Contains(m.Id) 
        select m).ToList(); 

上記は表2に含まれていないことが返されます。私はこれがあなたの望むものであることを願っています。

関連する問題