无法隐式转换类型';bool';到';bool';在LinQ查询中

本文关键字:bool 查询 LinQ 转换 类型 | 更新日期: 2023-09-27 18:30:13

我的where语句显然失败了,但我能找到的只是关于如何在LinQ查询之外转换它的示例。我能找到的最接近的是:

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

但是,我不太确定这在我的情况下是如何运作的。我知道我的SQL字段Active允许3个值,true、false和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查询中使用SQLIN语句。例如,将以下内容更改为LinQ:

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

无法隐式转换类型';bool';到';bool';在LinQ查询中

我认为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
}