【问题标题】:How to evaluate a dataset with a string ASP.NET C#如何使用字符串 ASP.NET C# 评估数据集
【发布时间】:2014-09-15 05:40:06
【问题描述】:

我希望能够使用字符串评估数据集。在 SQL 语句中,我将使用数据集提取数据,如果数据集与字符串匹配,我想做点什么。我不知道这样做的语法。

这是我的代码:

var sql = new SQL_Statements();
var stringSql = "select type from po where po_num=" + stringPO_NUM;
const string stringLumber = "Lumber";

var sql_ds = sql.SelectFromDB(stringSql);

if (sql_ds.Tables[0].Rows.ToString() == stringLumber)
{
   //Lets do something.
}

数据集正在从表中提取单词 Lumber。有人能告诉我我该怎么做吗?

【问题讨论】:

    标签: c# asp.net sql string dataset


    【解决方案1】:

    您在DataRowCollection 上调用ToString 而不是返回的单元格值。

    由于您的查询只返回行中的一个单元格,您可以通过直接索引DataRow 来访问第一个单元格:

    if (sql_ds.Tables[0].Rows[0][0].ToString() == stringLumber)
    

    Rows[0][0] 中,第一个0 是行索引,第二个是列索引。

    【讨论】:

    • 那不正确,当它为真时返回假
    • select type from po where po_num=" + stringPO_NUM 的结果肯定是“Lumber”。是否存在区分大小写的问题或其他问题?
    • 由于某种原因在 Lumber 后面有空格的地方很好调用
    【解决方案2】:

    现在的问题是您在行上调用 .ToString。这可能会返回对您不利的行的数据类型。

    您需要选择一个特定的行,然后在该行内选择一个特定的列值。如果只返回一行,您可以尝试:

    sql_ds.Tables[0].Rows[0][0].ToString() == stringLumber
    

    这将获得集合中的第一行,然后是第一列。您提到结果中可能有空格,因此您可以添加 .Trim() 如果需要删除字符串开头或结尾的空格。

    【讨论】:

    • @nate 编辑了我的答案。
    【解决方案3】:

    试试这个。这将遍历每一行以查看它是否与您的字符串匹配,然后在该行匹配时执行某些操作。所以你可能需要更多的代码来完成它。

    foreach (DataTable table in sql_ds.Tables)
    {
        foreach (DataRow row in table.Rows)
        {
            if (row.Field["ROW_NAME"].ToString() == stringLumber)
                {
                    //Lets do something.
                }
        }
    }
    

    【讨论】:

    • 请记住,您选择的上述答案只会评估第一行。这将评估所有行。
    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多