使用字符串快速搜索数据表中的行
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();
我需要 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();