Member 12912306 Ответов: 2

Как сделать массив из разных источников данных?


Привет, я хотел бы сделать массив значений из двух разных таблиц данных.
Я пытаюсь извлечь имена клиентов из двух таблиц данных. Эти таблицы данных содержат несколько транзакций от разных клиентов.

Что я уже пробовал:

Я получаю имена в массивах вот так:
string[] customers_DebAufwErtr = dtCloned_DebAufwErtr.AsEnumerable()            
            .Select(r => r.Field<string>("Kreditor Name"))
            .Distinct()
            .ToArray(); // The same thing for the other table as well  
Теперь я хотел бы присоединиться к этим двум массивам, но также избегая иметь одно и то же имя дважды в результирующем массиве.
Есть какие-нибудь предложения, как это сделать?

2 Ответов

Рейтинг:
0

Wendelius

Один из способов-использовать concat метод. Рассмотрим следующий пример

DataTable first = new DataTable();
DataTable second = new DataTable();

first.Columns.Add("col1", typeof(string));
second.Columns.Add("col1", typeof(string));

first.Rows.Add("A");
first.Rows.Add("B");
first.Rows.Add("C");
first.Rows.Add("D");

second.Rows.Add("C");
second.Rows.Add("D");
second.Rows.Add("E");
second.Rows.Add("F");

var distinctValues = (from i1 in first.AsEnumerable()
                      select i1.Field<string>("col1")).Concat(
                         from i2 in second.AsEnumerable()
                         select i2.Field<string>("col1")).Distinct();
foreach (string item in distinctValues) {
   Console.WriteLine(item);
}


Рейтинг:
0

#realJSOP

Вы можете добавить имена из двух таблиц данных в коллекцию хэш-таблиц. Хэш-таблица не допускает дубликатов (выдает исключение при попытке добавить дублирующуюся запись, которую вы должны обработать, но можете просто проигнорировать). В приведенном ниже коде я использую один и тот же colletion для обоих операторов linq, потому что я не знаю имени 2-й таблицы данных.

string[] customers_DebAufwErtr = dtCloned_DebAufwErtr.AsEnumerable()
            .Select(r => r.Field<string>("Kreditor Name"))
            .Distinct()
            .ToArray();

string[] customers2_DebAufwErtr = dtCloned_DebAufwErtr.AsEnumerable()
            .Select(r => r.Field<string>("Kreditor Name"))
            .Distinct()
            .ToArray();

HashTable<string> hash = new HashTable<string>();
foreach(string item in customers)
{
    try
    {
        hash.Add(item);
    }
    catch(Eception)
    {
        // do nothing
    }
}

foreach(string item in customers2)
{
    try
    {
        hash.Add(item);
    }
    catch(Eception)
    {
        // do nothing
    }
}