我想将DataRow[]
的值返回到c#
这是我的DataTable
:
DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("BugDescription", typeof(string));
table.Columns.Add("UnitPrice", typeof(double));
table.Rows.Add(1, "Bug 1", 10.00);
table.Rows.Add(2, "Bug 2", 20.00);
然后我创建一个名为DataRow[]
的{{1}},它存储ID = 1的行:
result
我想要实现的最后一步是将BugDescription值添加到名为DataRow[] result = table.Select("ID = 1");
的字符串中。
我将如何实现这一目标?
答案 0 :(得分:2)
你的代码
DataRow[] result = table.Select("ID = 1");
告诉你,你有一个DataRows数组。现在这意味着你可能在这里有多个记录。所以,现在它取决于你要分配哪一行。你可以这样做,如果你认为它将是第一个
if(result.Length > 0)
{
string description = Convert.ToString(result[0]["BugDescription"]);
}
以linq的方式做到这一点
string description = table.Rows.OfType<DataRow>().Where(row => (string)row["ID"] == "1").Select(row => (string)row["BugDescription"]).First();
答案 1 :(得分:1)
我知道提供答案的时间很晚,但是,我们可以在答案列表中再添加一个。
由于datatable.select以数组形式给出结果,因此要知道我们正在为每个行数组中的列获取itemarray。使用下面的示例简化此语句。
如果我们知道/记住/使用列的位置/编号而不是列名,则可以使用“ ItemArray”
//ID Name Age
//100 Name 100 Age 100
//101 Name 101 Age 101
//102 Name 102 Age 102
假设单行。
DataTable dt=new DataTable();
//Assigning some data into dt. with columns ID, Name, Age.
DataRow[] dr=dt.Select("ID=100");
string PersonID=dr[0].ItemArray[0].Tostring().trim(); //first column is ID
string PersonName=dr[0].ItemArray[1].Tostring().trim(); //second column is Name
string PersonAge=dr[0].ItemArray[2].Tostring().trim(); //third column is Age
因此变量将具有以下详细信息。
// PersonID= 100; PersonName= Name 100; PersonAge= Age 100
假设行数> 1(在此示例中为2)
dr=dt.Select("ID>100");
string PersonID_1=dr[0].ItemArray[0].Tostring().trim(); //first column is ID
string PersonName_1=dr[0].ItemArray[1].Tostring().trim(); //second column is Name
string PersonAge_1=dr[0].ItemArray[2].Tostring().trim(); //third column is Age
string PersonID_2=dr[1].ItemArray[0].Tostring().trim(); //first column is ID
string PersonName_2=dr[1].ItemArray[1].Tostring().trim(); //second column is Name
string PersonAge_2=dr[1].ItemArray[2].Tostring().trim(); //third column is Age
因此变量将具有以下详细信息。
// PersonID_1= 101; PersonName_1= Name 101; PersonAge_1= Age 101
// PersonID_2= 102; PersonName_2= Name 102; PersonAge_2= Age 102
要记住的要点:第一行或列的索引ID始终以0开头。 因此,dr [0]是第一行,ItemArray [0]是第一列
答案 2 :(得分:0)
如果你有一个DataRows数组,那么就像你声明它一样
DataRow[]
您可以按以下方式访问它:
string resultBug = result[0]["BugDescription"];
但是因为你只想要一行(并且你要判断你是否总是希望返回一行),那么你应该将它声明为一个普通的DataRow:
DataRow result = table.Select("ID = 1")[0];
string resultBug = result["BugDescription"].Dump();
Select返回一个行数组,因此您应该使用[0]对其进行索引以获得第一次出现。
答案 3 :(得分:0)
为了实现你的目标,你需要这样的东西:
if (result.Length > 0)
{
var description = result[0]["BugDescription"].ToString();
}
答案 4 :(得分:0)
如果你知道你只能获得一排,你可以将整个事情压缩到这个
string description = table.Select("ID = 1").First().Field<string>("BugDescription");