基于这个问题:how to run query on dataset?

我试图从我的数据集中查询数据表,其中文本包含一个字符串,类似于 String.Contains 方法或 sql LIKE 运算符。

这是我迄今为止尝试过的:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        DataTable tbl = globals.UserDataSet.Tables[0];
        DataRow[] tempDataRows = tbl.Select("USER_ID Like " + textBox1.Text + " OR THE_NAME Like " + textBox1.Text);
    }

这给出了 System.Data.SyntaxError 错误。

是否可以在数据表中查询包含子字符串的文本?有没有更好的方法来做到这一点?

最佳答案

几件事:

  • 首先,您需要将您的值括在单引号中。 (在链接的 question 中有)
  • 其次,如果你想比较 Contains 那么你的值应该有 %(就像 SQL)

  • 所以你的陈述应该是:
    DataRow[] tempDataRows = tbl.Select("USER_ID Like '%" + textBox1.Text + "%' OR THE_NAME Like '%" + textBox1.Text +"%');
    

    您还可以使用 LINQ to DataSet/DataTable 来过滤您的结果,例如:
    var query = tbl.AsEnumerable()
        .Where(r => r.Field<string>("USER_ID").Contains(textBox1.Text) &&
                    r.Field<string>("THE_NAME").Contains(textBox1.Text));
    

    关于c# - 查询包含文本的数据表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27553016/

    10-11 04:32
    查看更多