我有一个List和一个DataTable,它包含一个匹配列表中ID的列。我需要识别列表中不在DataTable中的所有ID。我尝试获取IEnumberable DataRow并将其加入列表但我无法识别丢失的那些。
这是我的代码以及我尝试过的内容......
List<int> JobIdList = (from i in EntryItems select i.JobID.Value).ToList<int>();
IEnumerable<DataRow> rowInfo = JobBLL.JobsExist(JobIdList).AsEnumerable();
var MissingList = (from rec in rowInfo
join id in JobIdList
on rec.Field<int>("JobID") equals id
into grouping
from id in grouping.DefaultIfEmpty()
select new { id }).ToList();
if (MissingList.Count > 0) { // Show message and exit }
问题是这会返回找到的数据表中的项目。假设我的列表中有1,2和3,但我的数据表只有1和3.我想在MissingList中有2个。
有什么想法吗?
答案 0 :(得分:2)
var jobIdList = new HashSet<int>(from i in EntryItems select i.JobID.Value);
var rows = JobBLL.JobsExist(jobIdList).AsEnumerable();
var foundIds = (from x in rows select x.Field<int>("JobID")).ToList();
var missingIds = jobIdList.Except(foundIds);
答案 1 :(得分:0)
您需要在代码中添加以下代码行。
var missingIds = JobIdList.Except(MissingList);