miss786 Ответов: 3

не может быть применен к операндам типа 'bool ' и' char ' - ошибка linq


В настоящее время я борюсь с получением параметра типа bool "sdata_ALL" в условии linq where. поле "data_ALL" может иметь значения 0 или 1. Я использую sql-запрос ниже, чтобы преобразовать его в linq-запрос,но у меня возникли трудности с параметром типа bool.

public bool subs(string username, string password)
       {
           //define the query : query will be an IQueryable
           var query = from s in db.Subscriptions
                       join u in db.UserDetails on s.sUID equals u.uID
                       where s.BS_ExpiryDate >= DateTime.Now &&
                       s.sPID.Value == 163 &&
                       s.data_All.Value ==  1 &&
                       u.uUsername == username &&
                       u.uPassword == password
                       select u; //

           // "execute" the query
           return query.FirstOrDefault() != null; // if there is a result it will return true
       }

Какое-нибудь понимание того, что я, возможно, упускаю или делаю неправильно?
Большое спасибо.

3 Ответов

Рейтинг:
22

Krunal Rohit

окей,
FirstOrDefault () возвращает первый элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

Так что если я не ошибаюсь то вы получаете string или, может быть, char значение, а метод-return bool ценность. Вместо этого вы можете сделать следующее измените тип возвращаемого значения вашего метода.

-КРОНА


Рейтинг:
1

Vaibhav-Systematix

Мы можем получить результат, применив true вместо 1 в параметре Boolean type

Пример:

(из идентификатора в objeApp_SchemaEntities.AspNetUsers где id.IsAdmissionAccount = = true select id.Id). FirstOrDefault();


Рейтинг:
1

miss786

Мне удается выяснить, что для логического типа это должно быть true / false return.

var query = from s in db.Subscriptions
                        join u in db.UserDetails on s.sUID equals u.uID
                        where s.BS_ExpiryDate >= DateTime.Now &&
                        s.sPID.Value == 163 &&
                        s.data_All.Value ==  true &&
                        u.uUsername == username &&
                        u.uPassword == password
                        select u; //