C# 转换为布尔实体框架

C# 转换为布尔实体框架,c#,C#,我正在尝试转换一个short值,该值表示系统中的true或false,-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 = IsTr

我正在尝试转换一个
short
值,该值表示系统中的
true
false
,-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)?真:假
//语法错误很明显,
是结束语句,但是
在那里,因为此select中有更多属性

另一种方法是调用一个函数,该函数根据传入的值返回true或false,但我想知道是否可以用最少的代码行来实现这一点

有什么建议吗


谢谢

您可以使用布尔表达式

.Select(c => new SomeFooModel
 {
     Foo = (IsTrueOrFalse == -1)
 }
或条件运算符

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

可以使用布尔表达式

.Select(c => new SomeFooModel
 {
     Foo = (IsTrueOrFalse == -1)
 }
或条件运算符

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

三元语句是这样写的:

IsFoo = (IsTrueOrFalse == -1) ? true : false
i、 e.不需要if,因为还有其他语句,所以您也不需要分号

编辑

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

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

尽管这会很快变得不可读。

三元语句是这样写的:

IsFoo = (IsTrueOrFalse == -1) ? true : false
i、 e.不需要if,因为还有其他语句,所以您也不需要分号

编辑

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

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

尽管这将很快变得不可读。

条件运算符不包括
if
。它应该是
IsTrueOrFalse==-1?真:假
。但实际上,您可以只执行
IsTrueOrFalse==-1
。请注意,这会将所有非-1的值设置为false。当然,这是该死的。你是对的!条件运算符不包括
if
。它应该是
IsTrueOrFalse==-1?真:假
。但实际上,您可以只执行
IsTrueOrFalse==-1
。请注意,这会将所有非-1的值设置为false。当然,这是该死的。你是对的!谢谢你救了我把头发拔出来,我不知道我是怎么错过的谢谢你救了我把头发拔出来,我不知道我是怎么错过的