2013-06-07 4 views
2

У меня есть этот код здесь:C лямбда-выражения # && операторы

public Model.task GetDelete(int qno , int aid , int tid) 
{ 
    return context.questions.FirstOrDefault(a => a.QuestionNo = qno & a.ActivityID == aid & a.TaskID == tid); 
} 

Мне нужно, чтобы соответствовать всем 3 идентификаторами, возникает ошибка выше, я новичок в программировании, как я могу это сделать без ошибок? В принципе, мне нужна проверка на 3 идентификатора, возможно ли это? Существует ошибка говоря

Operator '&&' cannot be applied to operands of type 'int' and 'bool'

+1

Почему код используется '&' вместо '&&'? – Jon

+2

Кроме того, вам не хватает '=' от первой проверки. Вам нужно '==', у вас есть только '='. – Jon

ответ

3

Вы должны использовать && вместо &

&& является

conditional-AND operator (&&) performs a logical-AND

& является

For integral types, & computes the logical bitwise AND of its operands. For bool operands, & computes the logical AND of its operands; that is`

+0

Я пытался && также, он тоже не работает, такая же ошибка – user2376998

+0

замените '=' на '==' – Mzf

4

Вы распайка оператор внутри лямбда =, вам нужно использовать оператор равенства ==, как:

context.questions.FirstOrDefault(a => a.QuestionNo == qno & a.ActivityID == aid & a.TaskID == tid); 
              //here ^^ 

Вы получаете ошибку:

Operator '&&' cannot be applied to operands of type 'int' and 'bool'

, потому что оператор присваивания возвращает значение int в вашем случае, в то время как оператор равенства на праве ожидает BOOL.

Использование оператора короткого замыкания && является необязательным здесь, они не изменят поведение вашего лямбда, если ваши свойства не имеют каких-либо side effects и они возвращаются примитивные типы или типы, которые надевают» t переопределить == оператор, вводящий побочные эффекты.

Смежные вопросы