在所有DataTable列中查找字符串

meY*_*not 3 c# datatable foreach

我试图找到一种快速的方法来在所有数据表列中找到一个字符串!随后没有工作,因为我想在所有列值内搜索.

string str = "%whatever%";
foreach (DataRow row in dataTable.Rows)
    foreach (DataColumn col in row.ItemArray)
        if (row[col].ToString() == str) return true;
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

您可以使用LINQ.它不会更快,因为你仍然需要查看每个单元格,以防值不存在,但它将适合一行:

return dataTable
    .Rows
    .Cast<DataRow>()
    .Any(r => r.ItemArray.Any(c => c.ToString().Contains("whatever")));
Run Code Online (Sandbox Code Playgroud)

要搜索随机文本并返回至少一个具有不区分大小写匹配的单元格的行数组,请使用以下命令:

var text = "whatever";
return dataTable
    .Rows
    .Cast<DataRow>()
    .Where(r => r.ItemArray.Any(
        c => c.ToString().IndexOf(text, StringComparison.OrdinalIgnoreCase) > 0
    )).ToArray();
Run Code Online (Sandbox Code Playgroud)