转换为布尔实体框架

时间:2016-05-31 16:17:09

标签: c#

我正在尝试转换short值,该值代表我们系统中的truefalse,-1(true),0(false )。

我想知道这种类型的转换/转换是否可能在内联模型属性初始化。

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;, //语法错误很明显;结束语句但,是因为此选择中有更多属性。

另一种方法可能是调用一个根据传入的值返回true或false的函数,但我想知道是否可以用最少的代码行完成。

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:4)

您可以使用布尔表达式

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

或条件运算符

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

答案 1 :(得分:1)

三元语句的写法如下:

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

即。不需要if和因为还有其他语句你也不需要半结肠。

修改

正如@juharr在评论中所述,如果该值不是-1,则IsFoo将设置为false。所以也许你应该做一些额外的检查。例如:

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

虽然这会很快变得难以理解。