1

我有一个 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。

有什么想法吗?

4

2 回答 2

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);
于 2013-04-19T02:29:20.643 回答
0

您需要将以下代码行添加到您的代码中。

var missingIds = JobIdList.Except(MissingList);
于 2013-07-16T09:23:31.797 回答