Запрос Linq к datatable

#c# #linq #lambda #datatable #dataset

#c# #linq #лямбда #datatable #набор данных

Вопрос:

У меня есть 2 набора данных ds1 и ds2, ds1 содержит допустимые значения, используемые в ds2, например, ds1 содержит предметную таблицу, содержащую математику, естественные науки, историю. ds2 содержит таблицу Student Таблица Student содержит столбец Subject. Значения ds2->Student-> Subject должны присутствовать в ds-> subject table.

Как эффективно реализовать этот тип проверки. Я не хочу перебирать каждую строку и столбец таблицы student.

например,
Имя таблицы Students Статус предмета
Питер Не сдал математику
Джордж Сдал естествознание
Джо ЭТО сдал
Роджер История Другое

Таблица предметов
Предмет
математика
Наука
Математика
История

Ошибка
прохождения
таблицы состояния
Status

Теперь я хочу сверить данные в таблице Students с таблицей Subject, проверить, присутствует ли Subject в таблице Subjects или нет. Здесь я хочу, чтобы в нем была строка Joe, поскольку ее нет в таблице Subjects, она недопустима.

Аналогично, мне нужно проверить данные таблицы Students с помощью таблицы Status.

Ожидаемый результат,
при условии, что ЭТО
статус Другое

Я хочу запрос LINQ.

Комментарии:

1. В настоящее время я использую DataTable для запроса.

2. Что у вас есть на данный момент в запросе LINQ, с чем вы боретесь?

Ответ №1:

Простой подход:

 var noSubject =
  ds.Student.AsEnumerable().Where(s => ds.Subject.Rows.Find(s.Subject) == null);
  

Предполагая, что субъект является PK в ds субъекта.