我有一个包含“InvalidCodes”的数据表。
在将数据上传到数据库之前(数据仍然在数据表中),我想在数据表上执行linq以删除无效的条目并将它们移动到另一个数据表中
datatable allEntries(尚未上传到数据库中的条目) datatable InvalidCodes(单列数据表 - 从数据库中检索) datatable invalidEntries
现在“allEnties”包含有效条目和无效条目。 “allEntries”上的linq查询应该将非执行代码条目移动到invalidEntries数据表。
请帮助我执行此操作。
以下是我形成的查询,但无效
string query = "select [CityCode] from [StateCity] ";
DataTable citylist = getDataTableFromSelect(query);
var result = from myrow in inputDt.AsEnumerable()
where !myrow.Field<string>("CityCode").Contains(from myrow2 in citylist.AsEnumerable() select myrow2.Field<string>("CityCode") )
select myrow;
答案 0 :(得分:2)
我为无效的城市代码制作一个HashSet - 这将允许代码快速/有效地识别哪些代码在无效的集合中。
e.g。类似的东西:
var invalidCityCodes = from myrow2 in citylist.AsEnumerable()
select myrow2.Field<string>("CityCode");
var invalidCityCodeHashSet = new HashSet<string>(invalideCityCodes);
var result = from myrow in inputDt.AsEnumerable()
where !invalidCityCodeHashSet.Contains(myrow.Field<string>("CityCode"))
select myrow;
答案 1 :(得分:1)
您也可以将结果记录在2个不同的列表中,然后就可以了 使用
List1 = List1.RemoveAll(Item=>List2.Contains(Item))
这对我很好,也适合你。