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, в противном случае вы можете также использовать структуру цикла...