2016-07-21 12 views
1

私のデータレイヤーのマイコードDtbseDropDown = ii.DtbseDropDownはエラーを投げています。私はそれを回避する方法がわかりません。エラーは次のようになります: "暗黙のうちに型 'boolを変換できませんか?' 「ブール」に。明示的な変換は、「ここboolを変換できませんか?ブールに

は、コードの私のデータ層のためのブロックとの私のエンティティ

データ層

public static List<ListProjectTypes> GetListProjectTypes() 

    { 
     using (var context = new Sys.EntityModels.HousingRehabEntities()) 
     { 
      // build and execute query against the db 
      //return context.ListProjectTypes.Where(x => x.DtbseDropDown=true).ToList(); 

      // build and execute query against the db 
      return (from ii in context.ListProjectTypes 
        where (ii.DtbseDropDown == true) 
        //&& ((ii.LastName + ii.FirstName + ii.Middle) != null)) 
        ////&& ((ii.LastName) != null)) 
        orderby ii.SortOrder 
        select new Sys.Entities.ListProjectTypes 
        { 
         ProjectType = ii.ProjectType, 
         SortOrder = ii.SortOrder, 
         DtbseDropDown = ii.DtbseDropDown 


     }).ToList(); 

     } 
    } 
} 

です(あなたはキャストが欠けている?)が存在しますエンティティ

namespace CityOfMesa.HousingRehab.Sys.Entities 
{ 

public class ListProjectTypes 
    { 
     public string ProjectType { get; set; } 
     public int? SortOrder { get; set; } 
     public bool DtbseDropDown { get; set; } 
    public ListProjectTypes() 
    { 

     ProjectType = string.Empty; 
     SortOrder = 0; 
     DtbseDropDown = true; 

    } 
} 

}

+2

[nullable boolを変換できますか? bool](http://stackoverflow.com/questions/6075726/convert-nullable-bool-to-bool) –

答えて

0

DtbseDropDown = (bool)ii.DtbseDropDown

1

に変更DtbseDropDown = ii.DtbseDropDownはいそれはあなたのデータモデルii.DtbseDropDownがNULL可能ブールので、誤りである原因です。あなたは

public class ListProjectTypes 
    { 
     public string ProjectType { get; set; } 
     public int? SortOrder { get; set; } 
     public bool? DtbseDropDown { get; set; } 
2

DtbseDropDownプロパティにそれを変更しようとしなければならないこと(trueまたはfalseの値を持つことができます)ii.DtbseDropDown一方bool?である(すなわちもnullすることができNullable<bool>の略記、。より多くのためのNullable Types (C# Programming Guide)を参照してください)boolです。 にboolを割り当てようとしているため、エラーが発生しています。あなたがする必要があるのは、構造体が実際に値を最初に持っているかどうかを確認することです。それは(.HasValue)した場合、(.Value)実際の値を返し、そうでなければ(私はここでfalseにデフォルト値を設定した)デフォルト値を返します。

DtbseDropDown = ii.DtbseDropDown.HasValue ? ii.DtbseDropDown.Value : false 

@testにより示唆されるようにまた、ii.DtbseDropDown.GetValueOrDefault()を使用することができますコメントの中で。両者の違いは、私のアプローチでは、ii.DtbseDropDownnullのときに出力する値を制御できますが、Nullable<T>.GetValueOrDefaultはデフォルトでdefault(bool)(つまりfalse)を返します。

+1

'ii.DtbseDropDown.GetValueOrDefault()'が私にとってはよりクリーンであるようです。 – test

+0

実際、より明示的なので、OPは値がどのように設定されているかを見ることができます。あなたのソリューションも編集します。 – trashr0x

関連する問題