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

drはではDataRow[]ないため、コンパイラは、インデックスDataRowにが必要なときに文字列を渡すと文句を言います。int

あなたは実際にシングルのユーザー名が欲しいです、DataRowDataTableは正しいですか?

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

に複数の行がある場合、これは例外をスローすることに注意してくださいDataTable。ただし、IDをに渡すので、DataAdapter1つのレコードのみを返す必要があると思います。

于 2012-06-06T16:27:45.053 に答える
1

2つの問題があるようです。1つは、AsifがuIDを "userId =" + uID(おそらくuIDを文字列としてキャストする必要がある)である必要があり、DrはTimが指摘するデータ行の配列であると示唆しているとおりです。インデックスからもアクセスできます:dr [0] ["userName"]。ToString()

于 2012-06-06T16:35:47.820 に答える