0

我正在尝试使用 DataRow 获取一行的记录。这是我到目前为止所做的:

 uID = int.Parse(Request.QueryString["id"]);
 PhotoDataSetTableAdapters.MembersTableAdapter mem = new PhotoDataSetTableAdapters.MembersTableAdapter();
 PhotoDataSet.MembersDataTable memTable = mem.GetMemberByID(uID);
 DataRow[] dr = memTable.Select("userID = uID");
 string uName = dr["username"].ToString();

然后我得到了错误:

无法将类型“string”隐式转换为“int”

错误指向"username"。我不知道出了什么问题,因为我只是想将一个字符串变量分配给一个字符串值。有人弄清楚错误的原因吗?请帮助和感谢。

4

3 回答 3

4

更改以下语句

DataRow[] dr = memTable.Select("userID = uID");

DataRow[] dr = memTable.Select("userID = "+ uID);
于 2012-06-06T16:27:22.353 回答
3

dris a DataRow[]not a DataRow,因此编译器抱怨你在他需要int索引时传递了一个 String 。

您实际上想要单曲的用户名,DataRowDataTable吗?

String uName = memTable.AsEnumerable().Single().Field<String>("username");

请注意,如果DataTable. 但是由于您将 ID 传递给DataAdapter,我假设它应该只返回一条记录。

于 2012-06-06T16:27:45.053 回答
1

似乎有两个问题。一个是 Asif 建议 uID 应该是“userId =” + uID(可能应该将 uID 转换为字符串),并且正如 Tim 指出的那样, dr 是一个数据行数组。您也可以通过索引访问它: dr[0]["userName"].ToString()

于 2012-06-06T16:35:47.820 回答