C#Linq查询表A列不相等/不表示数据表B列连接

时间:2016-08-30 15:22:14

标签: c# sql linq

我有一个ac#linq查询的问题我使用!=运算符,它在SQL中运行良好但是当我在C#中编写相同的查询时它会返回不同的结果,这是结果的正确方法表格列与表格b列不匹配。请参阅下面的我的SQL查询,然后查看我的c#查询。

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查询看起来像这样

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 };

SQL查询返回正确的结果,其中legal_name(表A)不等于legal_name(表B)是另一个表。

Linq查询返回错误结果,请协助。

2 个答案:

答案 0 :(得分:1)

我建议您尝试以下Linq,因为您需要表2中没有的数据:

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();

以上将返回Table2中没有的内容。我希望,这就是你想要的。

答案 1 :(得分:0)

您的SQL显示您要求他们在哪里相等。 LINQ显示您询问它们何时不相等。