基于另一个数据表中的记录从一个数据表格中删除记录
本文关键字:记录 数据表 一个 删除 数据 表格 另一个 | 更新日期: 2023-09-27 18:24:05
我在第一个数据表中得到了以下结果:
带有上传文档的数据表
clientcode jobcode joburl DocumentLink
1 1 http://ourlocaldomain.com http://ourlocaldomain.com/documents/1.pdf
1 2 http://ourlocaldomain.com http://ourlocaldomain.com/documents/2.pdf
包含所有客户端和作业的数据表,无论文档是否已上载。(第二个数据表上不存在文档链接列)
clientcode jobcode joburl
1 1 http://ourlocaldomain.com
1 2 http://ourlocaldomain.com
1 3 http://ourlocaldomain.com
1 4 http://ourlocaldomain.com
我的第三个数据表应该返回数据表2中不在数据表1中的所有记录,基于具有客户端代码和作业代码的匹配记录。
我想这应该与LINQ有关,但不知道从哪里开始挖掘:
我的代码是:
var keywordQueryAllInfoLists = new KeywordQuery(site);
dataTableAllInfoLists = KQLUtilities.ExecuteKql(keywordQueryAllInfoLists, queryTextAllInfoLists, selectedProperties.ToArray(), keywordQueryAllInfoLists.SortList);
var keywordQuery = new KeywordQuery(site);
dataTableAllEngagementLetters = KQLUtilities.ExecuteKql(keywordQuery, queryTextAllLetterOfEngagement, selectedProperties.ToArray(), keywordQuery.SortList);
编辑我尝试过以下几种:
resultingDatatable = dataTableAllEngagementLetters.Select()
.Where(x => !dataTableAllInfoLists.Select(string.Format("ClientCode = {0} and JobCode = {1}", x["ClientCode"], x["JobCode"]))
.Any())
.CopyToDataTable();
resultingDatatable = dataTableAllEngagementLetters.Select()
.Where(x => !dataTableAllInfoLists.Select(string.Format("ClientCode = [{0}] and JobCode = [{1}]", x["ClientCode"], x["JobCode"]))
.Any())
.CopyToDataTable();
这两个给我带来了以下异常:http://screencast.com/t/HWLZTOJEn8T
resultingDatatable = dataTableAllEngagementLetters.Select()
.Where(x => !dataTableAllInfoLists.Select(string.Format("ClientCode = '{0}' and JobCode = '{1}'", x["ClientCode"], x["JobCode"]))
.Any())
.CopyToDataTable();
最后一个告诉我源代码上有行!
不是很好,但这是我脑海中出现的第一个解决方案:
DataTable dataTable3 = dataTable2.Select().Where(x => dataTable1.Select(string.Format("clientCode = '{0}' and jobCode = '{1}'", x["clientCode"], x["jobCode"])).Count() == 0).CopyToDataTable();
编辑
Count == 0
您可以更改为!Any()
。所以应该是这样的:
DataTable dataTable3 = dataTable2.Select().Where(x => !dataTable1.Select(string.Format("clientCode = '{0}' and jobCode = '{1}'", x["clientCode"], x["jobCode"])).Any()).CopyToDataTable();