Не могу неявно преобразовать целое число типа в bool

1

Надеюсь, вы сможете помочь мне в этом вопросе. Я искал ранее поднятые вопросы, но не мог решить это с предоставленными ответами. Я получаю сообщение об ошибке "Невозможно неявно преобразовать тип integer в bool" в предложение where. Это пока
Столбец SchoolMasterID в моей базе данных и идентификатор, предоставленный через конструктор как
имеют тип integer.

public List<SchoolmasterIndexView> GetdSchoolMaster(EduDbContext db, int Id)
{
   var _schoolmaster = from n in db.SchoolMasters
   join c in db.Address on n.AddressID equals c.AddressID
   where **n.SchoolMasterID = Id**
   orderby n.SchoolMasterName
   select new SchoolmasterIndexView()
   {
      SchoolMasterID = n.SchoolMasterID,
      SchoolMasterName = n.SchoolMasterName,
      AddressID = c.AddressID,
      AddressLine1 = c.AddressLine1,
      AddressLine2 = c.AddressLine2,
      PostalCode = c.PostalCode,
      City = c.City
                   };
      return _schoolmaster.ToList();
    }
}
Теги:
linq
asp.net-mvc

1 ответ

8

Вам нужно использовать оператор равенства == вместо оператора присваивания = в предложении where.

var _schoolmaster = from n in db.SchoolMasters
                    join c in db.Address on n.AddressID equals c.AddressID
                    where n.SchoolMasterID == Id //<--equality operator
                    orderby n.SchoolMasterName
                    ...

Рассмотрим следующий простой код:

from item in new []{1,2,3} //array of ints
where item = 2             //compilation error, because of assignment operator
select item;

компилятор запускает точно такую же ошибку. Cannot implicitly convert type 'int' to 'bool'

Эта ошибка появляется, потому что оператор присваивания возвращает назначенное значение. Например:

int a;
var b = a = 2; //result of "a = 2" expression is 2 and then assigned to b 

Console.WriteLine(b); //prints 2. Two variables both have value 2

В Linq where предложение ожидает bool но получает тип int. Вот почему компилятор жалуется, что он не может преобразовать int в bool

Ещё вопросы

Сообщество Overcoder
Наверх
Меню