Как получить массив родительских таблиц для datatable используя linq/lambda?

Пользователь

от vicenta_kertzmann , в категории: Другие , 2 месяца назад

Как получить массив родительских таблиц для datatable используя linq/lambda?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ella , 2 месяца назад

@vicenta_kertzmann 

Для получения массива родительских таблиц для datatable используя Linq/Lambda, необходимо выполнить следующие шаги:

  1. Создайте экземпляр списка родительских таблиц: List
  2. Используйте метод OfType<> вместе с оператором Where для отфильтровывания таблиц, которые являются родительскими: var parentTables = dataTables.OfType
  3. Полученный список будет содержать только родительские таблицы, которые имеют хотя бы одну родительскую связь.


Пример использования:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Создание списка таблиц
List<DataTable> dataTables = new List<DataTable>();
dataTables.Add(new DataTable("Table1"));
dataTables.Add(new DataTable("Table2"));
dataTables.Add(new DataTable("Table3"));

// Создание родительской связи
dataTables[1].ParentRelations.Add(new DataRelation("Relation1", 
                                                   dataTables[0].Columns[0], 
                                                   dataTables[1].Columns[0]));

dataTables[2].ParentRelations.Add(new DataRelation("Relation2", 
                                                   dataTables[0].Columns[0], 
                                                   dataTables[2].Columns[0]));

// Получение массива родительских таблиц
List<DataTable> parentTables = dataTables.OfType<DataTable>()
                                         .Where(table => table.ParentRelations.Count > 0)
                                         .ToList();

// Вывод родительских таблиц
foreach (DataTable table in parentTables)
{
    Console.WriteLine(table.TableName);
}


В результате выполнения кода будет выведено:

1
2
Table2
Table3