2

データベースからすべての部屋タイプを選択するこの機能があります。データテーブルから値を一般的なリストに変換して、作成しているシステムの速度を最適化しています。問題は、保存されている各値を変換する方法です。 「アクティブ」/「非アクティブ」のデータベースからの値を持つフィールド isActive C#.net 4.0 でブール値に変換する必要がありました。

         internal static List<RoomType> FetchRoomTypeList()
         {
             List<RoomType> roomTypes = new List<RoomType>();
             SqlCommand commRoomTypeSelector = ConnectionManager.MainConnection.CreateCommand();
             commRoomTypeSelector.CommandType = CommandType.StoredProcedure;
             commRoomTypeSelector.CommandText = "Rooms.asp_RMS_RoomTypeList_Select";
             SqlDataAdapter da = new SqlDataAdapter(commRoomTypeSelector);
             DataSet ds = new DataSet();
             da.Fill(ds);
             roomTypes = (from rt in ds.Tables[0].AsEnumerable()
                          select new RoomType
                          {
                              RoomTypeID = rt.Field<int>("RoomTypeID"),
                              RoomTypeName = rt.Field<string>("RoomType"),
                              LastEditDate = rt.Field<DateTime>("LastEditDate"),
                              LastEditUser = rt.Field<string>("LastEditUser"),
                              IsActive = rt.Field<string>("IsActive") == "Active"
                          }
                         ).ToList();

             return roomTypes;
         }

以下の行は真の値を返しません。常に偽の値を返します。

IsActive = rt.Field<string>("IsActive") == "Active"

要求されたサンプル データ:

ここに画像の説明を入力

4

2 に答える 2

3

おそらくフィールドにスペースがありますか?試してみてくださいrt.Field<string>("IsActive").Trim()


わかりました。チェックrt.Field<string>("IsActive")して、UTF8 値が 89 ( 'Y') または 121 ( 'y') の 1 文字であることが確実である場合、次の推測では、それはプロパティです。

RoomType.IsActive自動プロパティですか?そうでない場合、ゲッターとセッターが正しいことを確認できますか?

そうでなく、return roomTypes;すべてが問題ないように見える場合は、コール スタックのどこかで値が変更されています。

于 2011-10-08T03:37:44.490 に答える
2

これを試して。

IsActive = rt.Field<string>("IsActive").Trim().ToUpper().Equals("Y")

truefalseを指定する必要はありません。

于 2011-10-08T03:54:32.753 に答える