基于NOT EQUAL连接数据表

时间:2014-04-15 14:33:20

标签: c# linq c#-4.0

以下代码从两个数据表中提供唯一的行。现在我想得到除这些之外的行。我正在尝试“!=”,但它给出了错误。

                DataTable dtResult = new DataTable();
                dtResult.Columns.Add("URL", typeof(string));
                dtResult.Columns.Add("TimeSpend", typeof(string));
                dtResult.Columns.Add("actionurl", typeof(string));
                dtResult.Columns.Add("searchedtext", typeof(string));
                dtResult.Columns.Add("datetime", typeof(string));

                var result = from dataRows1 in dtTMC.AsEnumerable()
                             join dataRows2 in dtSK.AsEnumerable()
                     // how to write condition for !=
                             on dataRows1["URL"] equals dataRows2["websiteurl"]
                             select dtResult.LoadDataRow(new object[]
                {
                        dataRows1.Field<string>("URL"),
                        dataRows1.Field<string>("TimeSpend"),
                        dataRows2.Field<string>("actionurl"),
                        dataRows2.Field<string>("searchedtext"),
                        dataRows2.Field<string>("datetime")

                }, true);

                DataTable dtAll = result.CopyToDataTable();
                dtAll.DefaultView.ToTable(); 

1 个答案:

答案 0 :(得分:0)

LINQ只支持相等连接,在连接本身中不能使用不同的运算符

但是,您可以使用where子句来完成此操作。

来自MSDN: 非等值连接 您可以使用多个from子句将新序列独立地引入查询,从而执行非等值连接,交叉连接和其他自定义连接操作。有关详细信息,请参阅如何:Perform Custom Join Operations (C# Programming Guide).