-2

次のようにcharをキャストしようとしています:

while (Reader.Read())
{
  VM VMResult = new VM();
  VMResult.status = (char)Reader["status"];
  VMList.Add(VMResult);
}

次に、楽しい部分があります。Specified Cast is not Valid.

VMResult.status は文字です

返されるデータは、SQL の char(1) です。

C# と SQL の char 用語には違いがあるに違いないと思います。

どう思いますか?

4

3 に答える 3

0

事実が常に char であることがわかっている場合Reader["status"](または最初の char のみが必要な場合)、現在の型Reader["status"]が a であるstring場合は、いつでも

VMResult.status = (!string.IsNullOrEmpty(Reader["status"])) ? 
                      Reader["status"].ToCharArray()[0] : '';

編集: nullチェックftw。

于 2012-06-15T17:31:49.197 に答える
0

基本的に文字列を char にキャストしたいので、「ステータス」値が単一の文字列であると仮定します。

VMResult.status = Reader["status"].ToString()[0];

これは、Reader[] がまだ文字列を返さず (返された場合ToStringは必要ありません)、値が null でないことも前提としています。

于 2012-06-15T17:32:03.590 に答える