Надеюсь, вы сможете помочь мне в этом вопросе. Я искал ранее поднятые вопросы, но не мог решить это с предоставленными ответами. Я получаю сообщение об ошибке "Невозможно неявно преобразовать тип 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();
}
}
Вам нужно использовать оператор равенства == вместо оператора присваивания = в предложении 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