#c# #datatable
Вопрос:
Мне нужно выбрать строки со строкой идентификаторов, которые не являются значением PK и int x и доступны для данных.выбор() занимает много времени. Есть ли более быстрый способ их выбрать. это мой код:
String a = "Id1, id2, ...";
meldunng.Select("columnname1 = " 2 " AND columnname2 IN (" a ")")
Если мой вопрос сбивает с толку или я сформулировал его неправильно, пожалуйста, скажите мне.
Спасибо в андвансе
Комментарии:
1. вы добавили индекс в столбец имя2? Это значительно повысит производительность.
Ответ №1:
Вы можете использовать a HashSet<string>
для повышения производительности и LINQ для запроса:
var ids = new HashSet<string>(new[] {"Id1", "id2", "id3"}, StringComparer.OrdinalIgnoreCase); // i guess you want to ignore the case
var matchingRows = meldunng.AsEnumerable()
.Where(row => row.Field<int>("columnname1") == 2 amp;amp; ids.Contains(row.Field<string>("columnname2")));
Обратите внимание, что это всего лишь запрос LINQ, и вам нужно «материализовать» его во что-то, например DataRow[]
:
DataRow[] resultRows = matchingRows.ToArray();