Поиск строк в таблице данных с помощью строки a быстро

#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();