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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤器表达式不计算为布尔项,C#相关的知识,希望对你有一定的参考价值。

我有一个comboBox,其中填充了数据库的标题。

当用户选择标题时,我想在listBox中显示该列的值。

我试图这样做。

 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,而只需循环遍历表的各行

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());
    }
}

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

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

在上面的示例中,我们采用名为“ColumnName”的列中存在“ColumnValue”字符串的表行的子集。 Select的其他有用用途与创建具有特定订单的新表相关联。请参阅DataColumn.SelectDataTableExtensions.CopyToDataTable文档

以上是关于过滤器表达式不计算为布尔项,C#的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤熊猫系列索引中的字符串

java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码。简单点,最好带括号

删除具有绑定布尔值的列表项 - SwiftUI

报表项表达式只能引用同一分组范围或包含分组范围内的其他报表项

C 流程语句

编译原理—中间代码生成布尔表达式翻译短路计算控制流语句翻译条件语句循环语句