2016-05-31 24 views
1

に短いキャスト。私は、我々のシステムで<code>true</code>または<code>false</code>を表し<code>short</code>値を変換しようとしています-1(<code>true</code>)、0(<code>false</code>)ブールエンティティフレームワーク

私は、この種のキャスト/変換がモデルプロパティが初期化されているインラインで可能かどうか疑問に思っていました。

public bool Foo {get;set;} 

example: 

return db.tblSomeTable 
.Where(c => c.FooID == 1) 
.Select(c => new SomeFooModel 
{ 
    FooID = id, 
    Foo = IsTrueOrFalse //value (-1, or 0) 
} 

私は、三項演算子を使用してみましたが、構文は意味をなさない:

IsFoo = if(IsTrueOrFalse == -1) ? true: false;, //構文エラーこの中に複数のプロパティがあるので、;文を終了が、そこ,されることは明らかです選択します。

これを行うもう1つの方法は、渡された値に基づいてtrueまたはfalseを返す関数を呼び出すことですが、最小限のコード行でこれを実行できるかどうかは疑問でした。

提案がありますか?

IsFoo = (IsTrueOrFalse == -1) ? true : false 

すなわち:

おかげ

+4

条件演算子には 'if'が含まれていません。それはちょうど 'IsTrueOrFalse == -1でしょうか?真:偽」。しかし、実際には 'IsTrueOrFalse == -1'だけ行うことができます。 -1でないすべての値をfalseに設定することに注意してください。もちろん、 – juharr

+0

ああ、それはもちろんです。あなたが正しいです! – Haris

答えて

4

あなたは三元の文がそうのように書かれている

.Select(c => new SomeFooModel 
{ 
    Foo = (IsTrueOrFalse == -1) ? true : false 
} 
+0

私の髪を引っ張って私を救ってくれてありがとう、私はそれを逃した方法がわからない – Haris

1

ブール式

.Select(c => new SomeFooModel 
{ 
    Foo = (IsTrueOrFalse == -1) 
} 

や条件演算子を使用することができますifの必要はありません。また、セミコロンも必要ない他のステートメントがあるためです。

EDIT

@juharrとしての価値が-1以外であれば、IsFooがfalseに設定されたコメントで述べています。だから多分あなたはいくつかの余分なチェックをする必要があります。例:

IsFoo = (IsTrueOrFalse == -1) ? true : (IsTrueOrFalse == 0) ? false : throw new ArgumentOutOfRangeException() //Or whatever 

しかし、それは高速になります。

+0

あなたの貢献のためにありがとう:) – Haris

関連する問題