5

我正在尝试使用列名从数据视图中查找值。我的数据集显示值,但我的 if 条件返回 false。我正在使用 c# 在 asp.net 中工作。

我尝试过使用不同的代码。我试图获得这样的价值

dv[0].DataView.Table.Columns[0].ToString().Contains("52")
   //RETURN FALSE

OR

dv[0].Equals("52")
   // //RETURN FALSE

或者

dv[0].Find("52")
   // //RETURN FALSE

以下是我的数据集 在此处输入图像描述

4

5 回答 5

2

如果“GBA_Nbr_GBAccount”列是字符串类型,它可能包含空格。您应该在比较之前修剪文本。尝试这个

dv[0]["GBA_Nbr_GBAccount"].ToString().Trim().Equals("52");
于 2013-06-21T09:09:26.047 回答
1

改用 DataViewManager 对象,它有一个与之关联的 DataSet 属性,并且数据集具有所有正常的数据集功能。因此,您可以遍历 dataset.tables[index] 对象...

希望能帮助到你

示例dv.DataViewManager.DataSet.Tables[0].Rows[0][1]

谢谢,山姆

于 2014-12-18T21:50:37.167 回答
1

检查数据视图中是否存在特定列的一种方法如下:

if (dv.Table.Columns["Name"] != null)
{
//Name column exists. Add Logic here
}
于 2013-11-04T18:58:48.000 回答
1

您可以使用Linq查询数据表或数据视图。例如,假设您的列是字符串类型:

var condition = yourDataTable.AsEnumerable()
                             .Any(r => r.Field<string>("GBA_Nbr_GBAccount") == "52");

var condition = yourDataView.Cast<DataRowView>()
                            .Any(rv => rv.Row.Field<string>("GBA_Nbr_GBAccount") == "52");

如果列是整数,只需更改Field<string>toField<int>并与整数进行比较,而不是字符串

var condition = yourDataTable.AsEnumerable()
                             .Any(r => r.Field<int>("GBA_Nbr_GBAccount") == 52);

var condition = yourDataView.Cast<DataRowView>()
                            .Any(rv => rv.Row.Field<int>("GBA_Nbr_GBAccount") == 52);

使用字符串列的示例应用程序:

static void Main(string[] args)
{
    DataSet dataset = new DataSet();
    dataset.Tables.Add(new DataTable("table1"));
    dataset.Tables[0].Columns.Add(new DataColumn("Value", typeof(string)));
    dataset.Tables[0].Rows.Add("10");
    dataset.Tables[0].Rows.Add("52");

    DataTable table = dataset.Tables[0];
    DataView view = table.DefaultView;

    var condition1 = table.AsEnumerable().Any(r => r.Field<string>("Value") == "52");

    var condition2 = view.Cast<DataRowView>().Any(rv => rv.Row.Field<string>("Value") == "52");

    Console.WriteLine(String.Format("Result querying datatable: '{0}'. Result using dataview:'{1}'", condition1, condition2));
     Console.ReadLine();
}

如果您确实在列中使用字符串,请检查空格并在需要时应用修剪。

于 2013-06-21T09:10:32.033 回答
0
int rowIndex = dv.Find("52");

if (rowIndex == -1) {
    Console.WriteLine("No match found.");
} 
else {
    Console.WriteLine("{0}, {1}", 
    dv(rowIndex)("GBA_Nbr_GBAccount").ToString(), 
    dv(rowIndex)("GBA_Nam_GBAccount").ToString());
}

我认为这可能是您问题的解决方案,或者至少可以为您指明正确的方向。

于 2013-06-21T08:40:54.750 回答