Проблема при сортировке DataTable с LINQ на основе DateTime - PullRequest
0 голосов
/ 22 августа 2011

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

private static void Test()
    {
        DateTime testDate = DateTime.Parse("01/01/2011");

        DataTable table = new DataTable();
        table.Columns.Add("dateValue");
        table.Columns.Add("slNo");

        DataRow row1 = table.NewRow();
        row1["dateValue"] = "01/01/2011";
        row1["slNo"] = "1";

        DataRow row2 = table.NewRow();
        row2["dateValue"] = "01/02/2011";
        row2["slNo"] = "1";
        DataRow row3 = table.NewRow();
        row3["dateValue"] = "02/01/2011";
        row3["slNo"] = "1";
        DataRow row4 = table.NewRow();
        row4["dateValue"] = "01/03/2011";
        row4["slNo"] = "1";

        table.Rows.Add(row1);
        table.Rows.Add(row2);
        table.Rows.Add(row3);
        table.Rows.Add(row4);

        var t = table.AsEnumerable().OrderBy(x => x.Field<DateTime?>("dateValue")).ToList();
    }

Я получаю следующее сообщение об ошибке:

Specified cast is not valid.

Предоставленная дата может быть проанализирована для объекта DateTime. Но все равно получаю вышеуказанную ошибку. Есть идеи, чего не хватает?

Я использую C # 3.5

Ответы [ 3 ]

0 голосов
/ 22 августа 2011

Если вы удалите ToList () в последней строке, это сработает.

var t = table.AsEnumerable (). OrderBy (x => x.Field ("dateValue")). ToList ();

Похоже, проблема приведения происходит в вызове ToList ();

0 голосов
/ 22 августа 2011

Вы не указали тип столбца, поэтому попробуйте использовать объект в поле:

var t = table.AsEnumerable().OrderBy(x => x.Field<DateTime?>("object")).ToList();

0 голосов
/ 22 августа 2011

Попробуйте изменить следующую строку:

table.Columns.Add("dateValue");

на эту:

table.Columns.Add("dateValue", typeof(DateTime?));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...