从DataTable </int>中的List <int>中查找缺少的ID

时间:2013-04-19 02:17:18

标签: c# .net linq linq-to-sql

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

有什么想法吗?

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);