[c#]不能隐式转换类型 'bool?' 到 'bool' 在 LinQ 查询中吗?

标签: Linq C#
发布时间: 2017/2/28 22:42:37
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在哪里语句失败很明显,但所有我能找到如何转换在 LinQ 查询外部样品。 我可以来最接近的是︰

&& rdoNoPhone.Checked ? d.PHONE!= null : true

但是,不太清楚如何在我的情况。 我明白我称为主动的 SQL 字段允许 3 值、 实情、 假和 null 和我猜我的答案都在那小小的问号。

LinQtoSQLDataContext db = new LinQtoSQLDataContext();
                   var query = from a in db.Admins
                               where a.Active = true
                               orderby a.Name
                               select new { a.Name, a.LoginName};

我也应该问如何就可以在 LinQ 查询中使用 SQL 的语句。例如,更改 LinQ 到以下︰

Select Field1, Field2, Level
From Table
Where Level IN (1,2,5)

解决方法 1:

我相信你在行中的等号 where a.Active = true 实际上应该是两个等号 (来比较,而不是赋值的意思)。事实上,因为你比较一个 bool 到 true ,你甚至不需要一个比较运算符。你可以只写 a.Active.Value

LinQtoSQLDataContext db = new LinQtoSQLDataContext();
                   var query = from a in db.Admins
                               where a.Active.HasValue && a.Active.Value
                               orderby a.Name
                               select new { a.Name, a.LoginName};

对于你的第二个问题,你可以使用 Contains(value) 来解决这个问题。例如︰

int[] Levels = new int[] { 1, 2, 5 };
int Level = 2;
if (Levels.Contains(Level))
{
    // Level was found in Levels
}
赞助商