如何在c#中获取DataTable中特定单元格的值?

时间:2016-01-30 11:33:47

标签: c#

我是c#的新手并使用Windows窗体。

screenshot

我有一个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"

我希望它足够清楚。谁知道如何实现这一目标?谢谢

3 个答案:

答案 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。