我的where语句明显失败,但我能找到的只是如何在LinQ查询之外转换它的示例。我能来的最近的是:
&& rdoNoPhone.Checked ? d.PHONE!= null : true
但是,我不太确定这在我的案例中是如何运作的。我理解我的SQL字段名为Active允许3个值,trues,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查询中使用SQL IN语句。例如,将以下内容更改为LinQ:
Select Field1, Field2, Level
From Table
Where Level IN (1,2,5)
答案 0 :(得分:4)
我相信你在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
}