使用字符串快速搜索数据表中的行

Search rows in Datatable with string a fast

我需要 select 行的 ID 字符串不是 PK 和 int 值 x, datatable.select() 需要很多时间。有没有更快的方法 select 他们。 这是我的代码:

String a = "Id1, id2, ...";

meldunng.Select("columnname1 = " + 2  " AND columnname2 IN (" + 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 && ids.Contains(row.Field<string>("columnname2")));

请注意,这只是 LINQ 查询,您需要将其“具体化”为某些内容,例如 DataRow[]:

DataRow[] resultRows = matchingRows.ToArray();