C# Linq在select子句中计算可为空的类型

C# Linq在select子句中计算可为空的类型,c#,linq-to-entities,C#,Linq To Entities,我得到一个奇怪的异常:“未知表达式类型:IIF(e.credited.Value,1,0)” 运行以下语句: var x = from e in _EntityManager.TrainingCourses select new { Disabled = (e.Accredited.Value ? 1 : 0) }; 请帮忙!!如何评估select中的(bool?)值 谢谢假设e.credited是一个可为空的(bool?),请尝试以下操作: var x = from

我得到一个奇怪的异常:
“未知表达式类型:IIF(e.credited.Value,1,0)”
运行以下语句:

var x = from e in _EntityManager.TrainingCourses
            select new { Disabled = (e.Accredited.Value ? 1 : 0) };
请帮忙!!如何评估select中的(bool?)值


谢谢

假设
e.credited
是一个
可为空的
bool?
),请尝试以下操作:

var x = from e in _EntityManager.TrainingCourses
        select new { Disabled = (e.Accredited.HasValue && e.Accredited.Value) };

假设
e.credited
是一个
null
bool?
),请尝试以下操作:

var x = from e in _EntityManager.TrainingCourses
        select new { Disabled = (e.Accredited.HasValue && e.Accredited.Value) };

这个代码回答了你的问题吗?明确检查bool值似乎可以做到这一点:

void Main()
{

    var a = new List<acc>() { 
        new acc(){Accredited = false}, 
        new acc(){Accredited = true}, 
        new acc(){Accredited = null}
        };

    var x = from e in a
        select new { Disabled = (e.Accredited == true ? 1 : 0) };

    foreach (var i in x)
    {
        Console.WriteLine(i);
    }
}
public struct acc
    {
       public bool? Accredited;
    }
void Main()
{
var a=新列表(){
新acc(){associated=false},
新acc(){associated=true},
新建acc(){associated=null}
};
var x=从a中的e开始
选择新{Disabled=(e.credited==true?1:0)};
foreach(x中的变量i)
{
控制台写入线(i);
}
}
公共结构acc
{
公共bool?认证;
}
输出: 0 1.
0

此代码是否回答了您的问题?明确检查bool值似乎可以做到这一点:

void Main()
{

    var a = new List<acc>() { 
        new acc(){Accredited = false}, 
        new acc(){Accredited = true}, 
        new acc(){Accredited = null}
        };

    var x = from e in a
        select new { Disabled = (e.Accredited == true ? 1 : 0) };

    foreach (var i in x)
    {
        Console.WriteLine(i);
    }
}
public struct acc
    {
       public bool? Accredited;
    }
void Main()
{
var a=新列表(){
新acc(){associated=false},
新acc(){associated=true},
新建acc(){associated=null}
};
var x=从a中的e开始
选择新{Disabled=(e.credited==true?1:0)};
foreach(x中的变量i)
{
控制台写入线(i);
}
}
公共结构acc
{
公共bool?认证;
}
输出: 0 1.
0

这确实有效,但必须将“禁用”设置为1或0,而不是true或false。我必须返回的是“已禁用”或“未禁用”。我想知道怎么用这个linq select子句中的语句该语句确实有效,但必须将Disabled设置为1或0,而不是true或false。我必须返回的是“已禁用”或“未禁用”。我想知道怎么用这个linq select子句中的语句