Как удалить строки из DataTable в C # с помощью фильтра? - PullRequest
6 голосов
/ 16 мая 2011

У меня есть DataTable с несколькими строками, одна из которых - ID (строка) и System.DateTime.другие строки теперь не важны.

теперь я хочу удалить все строки с тем же идентификатором, которые имеют более старый DateTime, чем самый новый.

возможно ли это?

вот пример

  • ID: 123 Дата: 24.12.2010 ...
  • ID: 123 Дата: 23.12.2010 ...
  • ID: 123Дата: 22.12.2010 ...

после этого я хочу только:

  • ID: 123 Дата: 24.12.2010 ...

1 Ответ

7 голосов
/ 16 мая 2011

Попробуйте следующий

public void DeleteOldById(DataTable table, int id)
{
      var rows = table.Rows.Cast<DataRow>().Where(x => (int)x["ID"] == id);
      DateTime specifyDate = rows.Max(x => (DateTime)x["Date"])

      rows.Where(x =>(DateTime)x["Date"] < specifyDate).ToList().
           ForEach(x => x.Delete());
}


public void DeleteAllOldRows(DataTable table)
{
     var ids = table.Rows.Cast<DataRow>().Select(x => (int)x["ID"]).Distinct();
     foreach(int id in ids)
        DeleteOldById(table,id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...