У меня есть список целых чисел с именем IDsList, который используется для извлечения списка строк XML из таблицы с именем MyTbl с использованием соединения с сущностной структурой. Затем строки XML используются для выполнения других задач. Что из следующего будет лучше?
Метод 1
var IDsList = new List<Int32> () {17, 23, 47, 62, 63, 79, 85, 91, 100}; // user input
List<String> XMLStrs = null;
using (var ctx = new DatabaseEntities ()) {
XMLStrs = IDsList.Select (i => Ctx.MyTbl.First (tr => tr.id == i).xml_str).ToList ();
}
XMLStrs.AsParallel ().ForAll (xs => {
// Do something in parallel
});
Метод 2
var IDsList = new List<Int32> () {17, 23, 47, 62, 63, 79, 85, 91, 100}; // user input
IDsList.AsParallel ().ForAll (i => {
using (var ctx = new DatabaseEntities ()) {
var xs = ctx.MyTTbl.First (tr => tr.id == i).xml_str;
// Do something with xs
}
});
Или есть другой метод, более идиоматический C #?
Обратите внимание , что список IDsList, как правило, намного длиннее, часто длиной в несколько тысяч. И каждое отдельное выполнение определенного значения xs занимает примерно столько же времени, сколько и любое другое.