c# Linq查询,其中表A列不等于/不数学表B列连接

本文关键字:连接 不等于 查询 Linq | 更新日期: 2023-09-27 18:04:40

我有一个c# linq查询的问题,我使用!=运算符,它在SQL中工作得很好,但当我在c#中编写相同的查询时,它返回不同的结果,这是正确的方法,其中表a列不匹配表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查询返回错误结果,请协助

c# Linq查询,其中表A列不等于/不数学表B列连接

我建议尝试以下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();

将返回不在表2中的内容。我希望,这是你想要的。

您的SQL显示您询问它们在哪里相等。当它们不相等时,LINQ显示您在请求