过滤器表达式不计算为布尔项,C#

Filter expression does not evaluate to a Boolean term, C#

我有一个组合框,其中填充了数据库的 header。

当用户 select 是 header 时,我想在列表框中显示该列的值。

我正在尝试这样做。

 private void button3_Click_2(object sender, EventArgs e)
    {
        listBox1.Items.Clear();

        //name of column to display data from
        var selectedColumn = comboBox1.Text.ToString();

        //dataRow array of data
        var selectedColumnItems = aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Select(selectedColumn);

        //iterate through dataRow and display in listBox
        foreach (var columnItem in selectedColumnItems)
        {
          listBox1.Items.Add(columnItem);
        }
    }

但是,如果我 select 一个非布尔类型的列,它会得到这个错误:

"Filter expression does not evaluate to a Boolean term"

即使我做 select 一个布尔列,它也只显示程序的名称。然而,它似乎确实从数据库中获取了一些数据,因为它显示了数据库中 "true" 个术语的正确数量的程序名称。

如果您想在没有任何条件的情况下显示单个列的内容,则不需要 SELECT 但您只需遍历 table

的行
private void button3_Click_2(object sender, EventArgs e)
{
    listBox1.Items.Clear();

    //name of column to display data from
    var selectedColumn = comboBox1.Text.ToString();

    //iterate through dataRow and display in listBox
    foreach (DataRow row in aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Rows)
    {
        listBox1.Items.Add(row[selectedColumn].ToString());
    }
}

当您需要过滤table 的内容时使用DataTable.Select 方法添加某种可以解析为布尔值的表达式。

DataRow[] result aSH_ORDER_DBDataSet1.ASH_PROD_ORDERS.Select("ColumnName = 'ColumnValue'");

在上面的示例中,我们取 table 行的子集,这些行在名为 'ColumnName'.
的列中具有 'ColumnValue' 字符串 Select 的其他有用用途与创建具有特定顺序的新 Table 有关。请参阅 DataColumn.Select and the DataTableExtensions.CopyToDataTable 文档