Получить значение максимальной даты из X таблиц в наборе данных - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть DataSet с 1-3 таблицами, в каждой таблице есть столбец с именем m_date (строка). Я хочу получить максимальное значение для всех из них, используя LINQ.

Я знаю, как получить каждую таблицу. Максимумзначение:

var maxDate=ds.Tables[index].AsEnumerable()
              .Max(x=>DateTime.Parse(x["m_date"].ToString())).ToString();

, но я не знаю, как получить максимальное значение из всех таблиц информации

Редактировать:

У меня сейчас естьчто-то вроде этого, которое работает:

DateTime maxDate=DateTime.MinValue;

foreach  (DataTable tbl in ds.Tables)
{
     DateTime maxDateCur=ds.Tables[index].AsEnumerable()
                  .Max(x=>DateTime.Parse(x["m_date"].ToString()));
     maxDate=new DateTime[] {maxDateCur,maxDate}.Max();
}

но я чувствую, что это можно сделать лучше.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете сделать это следующим образом:

var maxDate = Enumerable.Range(0, ds.Tables.Count)
        .SelectMany(index => ds.Tables[index].AsEnumerable())
        .Max(dataRow => dataRow.Field<DateTime>("m_date"))
        .ToString();
  • Использует Enumerable.Range для генерации индексов, позволяющих нам получить доступ к каждому человеку DataTable.
  • Использует SelectMany дляполучить один IEnumerable<DataRow>
  • Использует Max, чтобы получить максимальное значение и преобразовать его в строку.

Немного другой вариант будет:

var maxDate = Enumerable.Range(0, ds.Tables.Count)
                .Select(index =>
                    ds.Tables[index].AsEnumerable()
                        .Max(dataRow => dataRow.Field<DateTime>("m_date")))
                .Max().ToString();
  • Использует Enumerable.Range для генерации индексов, позволяющих нам получить доступ к каждому индивидууму DataTable.
  • Использует Select, чтобы получить IEnumerable<DateTime>, состоящий из максимума DateTime каждого DataTable
  • Использует Max, чтобы получить максимальное значение DateTime и затем преобразовать в строковое представление.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...