C#: итерация по таблице данных: строки, Select () или AsEnumerable()

foreach (DataRow row in myDataTable.Select())

foreach (DataRow row in myDataTable.AsEnumerable())

foreach (DataRow row in myDataTable.Rows)

какие-то отличия?

2 ответов


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

Select необходимо построить массив, поэтому там, очевидно, есть штраф за производительность.

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


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