我是c#的新手并使用Windows窗体。
我有一个dataTable,如屏幕截图所示,我想根据button_Text
列值获取Button_Name
列中特定单元格的值,并将其保存在字符串中。我知道我可以使用这段代码:
string s = DataTable.Rows[2][1];
但是我不想使用它,因为我不想在括号之间使用数字来索引单元格值,而是希望使用Button_Name
列值和button_Text
列名来索引单元格值。
例如:
string s = DataTable.Rows[ButtonUC1_3][Button_Text]; // but it gives error : "Argument1: can not convert from string to int"
我希望它足够清楚。谁知道如何实现这一目标?谢谢
答案 0 :(得分:2)
使用LINQ to DataSet,您可以使用列名
string value = dataTable.AsEnumerable()
.Where((row) => row.Field<string>("button_Name").Equals("ButtonUC_1"))
.Select((row) => row.Field<string>("button_Text"))
.FirstOrDefault();
答案 1 :(得分:0)
此处行必须为Int formet,但允许使用列字符串, 低于一是错误
string s = DataTable.Rows["ButtonUC1_3"]["Button_Text"];
正确的formet是,
string s = DataTable.Rows[2]["Button_Text"];
它将给出单元格值。
答案 2 :(得分:-1)
DataTable Rows没有名称,它们仅按编号索引。如果要通过指定的名称访问行,则需要使用自己的映射,例如: var rowMapping = new Dictionary<string,int>() { { ButtonUC1_3, 0}, ... }
然后像DataTable.Rows[rowMapping[ButtonUC1_3]][Button_Text]
一样访问DataTable。
显然,这不是唯一的方法,你可以定义一个枚举,整数常量等等。这取决于你有多少行以及你如何使用你的DataTable。