У меня есть список и DataTable, который содержит столбец, соответствующий идентификаторам в списке. Мне нужно идентифицировать все ID в моем списке, которых нет в DataTable. Я попытался получить IEnumberable DataRow и присоединиться к этому списку, но я не могу определить недостающие.Найдите отсутствующие идентификаторы из списка <int> в DataTable
Вот мой код, и что я пытался ...
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. Я хочу иметь 2 в MissingList.
Любые мысли?
Хешсет является чуть более результативным, чем List для метода Except. – Aron
Спасибо! Незначительное исправление, но 'from x row in rows' должно быть просто' from x in rows'. Отлично работает! –
@ RyanBrooks исправлено – Aron