c # с использованием DataTable AsEnumerable () в .NET 2 - PullRequest
4 голосов
/ 01 марта 2011

Я пытаюсь запустить следующий код в приложении winnet .net 2:

DataTable dt = this.GetData(null, null, true, sql);

DateTime minDate = (from f in dt.AsEnumerable()
               select f.Field<DateTime>("Timestamp")).Min();

Я получаю сообщения об ошибках "using system.linq" и ".AsEnumerable ()". Есть ли способ, как я могу решить эту проблему, чтобы использовать AsEnumerable ()? Или мне просто отказаться от этого метода?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 01 марта 2011

.NET 2 не имеет LINQ.Вы можете использовать LINQBridge , который может включать или не включать метод расширения AsEnumerable() для DataTable.Если это так, вы можете просто использовать Cast<DataRow>() вместо этого, необязательно через явно введенную переменную диапазона:

DateTime minDate = (from DataRow f in dt.AsEnumerable()
                    select f.Field<DateTime>("Timestamp")).Min();

Тогда вам также понадобится метод расширения Field<T> для DataRow.Вы, вероятно, могли бы написать это сами, хотя, если он не является частью LINQBridge.

Просто чтобы прояснить - none этого будет приятно работать, если вы также используете Visual Studio 2005, потому чтовам нужны функции C # 3 лямбда-выражений, методы расширения и т. д.

Есть ли возможность обновить до .NET 3.5?Это сделало бы жизнь намного проще ...

0 голосов
/ 01 марта 2011

LINQ был представлен в .NET 3.5, поэтому я боюсь, что вам здесь не повезло: (

...