C #: перебор таблицы данных: Rows, Select () или AsEnumerable () - PullRequest
6 голосов
/ 06 сентября 2010
foreach (DataRow row in myDataTable.Select())

foreach (DataRow row in myDataTable.AsEnumerable())

foreach (DataRow row in myDataTable.Rows)

Есть ли различия?

Ответы [ 2 ]

7 голосов
/ 07 сентября 2010

Rows не является строго типизированным - поэтому на каждой итерации будет выполняться приведение, и вы не сможете легко использовать LINQ для объектов на ней. (Я полагаю, что AsEnumerable() также придется использовать для каждой итерации внутри, но, по крайней мере, вы можете легко использовать ее для других методов LINQ.)

Select необходимо построить массив, так что, очевидно, там снижение производительности.

Лично я бы использовал AsEnumerable(), если только вы не хотите изменить таблицу в цикле, и в этом случае тот факт, что Select создает массив заранее, может на самом деле быть преимуществом.

0 голосов
/ 07 сентября 2010

Используйте AsEnumerable (), если вы пытаетесь запросить данные с использованием LINQ, в противном случае, вы также можете использовать структуру цикла ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...