Мое утверждение where явно не работает, но все, что я могу найти, это примеры того, как преобразовать его за пределы запроса LinQ. Самое близкое, что я могу прийти, это:
&& rdoNoPhone.Checked ? d.PHONE!= null : true
Но я не совсем уверен, как это работает в моем случае. Я понимаю, что мое поле SQL под названием Active позволяет 3 значения, истины, 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};
Я также должен спросить, как можно использовать инструкцию SQL IN в запросе LinQ. Например, изменив следующее в LinQ:
Select Field1, Field2, Level
From Table
Where Level IN (1,2,5)
Я считаю, что ваш знак равенства в строке, 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
}
nullableBool.HasValue && nullableBool.Value == true
и для вашего второго вопросаnew[] {1, 2, 5}.Contains(value)
.where a.Active = true
: вы уверены, что не имели в виду==
?