我正在尝试使用列名从dataview中查找值。我的数据集显示值,但我的if条件返回false。我使用c#在asp.net中工作。
我尝试过不同的代码。我想要获得像这样的价值
dv[0].DataView.Table.Columns[0].ToString().Contains("52")
//RETURN FALSE
OR
dv[0].Equals("52")
// //RETURN FALSE
OR
dv[0].Find("52")
// //RETURN FALSE
以下是我的数据集
答案 0 :(得分:2)
如果“GBA_Nbr_GBAccount”列是字符串类型,则它可能包含空格。 您应该在比较之前修剪文本。试试这个
dv[0]["GBA_Nbr_GBAccount"].ToString().Trim().Equals("52");
答案 1 :(得分:1)
您可以使用Linq
查询数据表或数据视图。例如,假设您的列的类型为string:
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>
更改为Field<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();
}
如果您确实在列中使用字符串,请检查空格并根据需要应用修剪。
答案 2 :(得分:1)
检查数据视图中是否存在特定列的一种方法如下:
if (dv.Table.Columns["Name"] != null)
{
//Name column exists. Add Logic here
}
答案 3 :(得分:1)
使用DataViewManager对象 它具有与之关联的DataSet属性,并且数据集具有所有常规数据集功能。因此,您可以遍历dataset.tables [index] object ...
希望有所帮助
示例:dv.DataViewManager.DataSet.Tables[0].Rows[0][1]
谢谢, 萨姆
答案 4 :(得分: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());
}
我认为这可能是您问题的解决方案,或者至少指出您正确的方向。