проверка нулевого условия с помощью linq для entites с использованием нескольких соединений - PullRequest
0 голосов
/ 15 сентября 2011

У меня такой запрос ... ниже ... Я хочу проверить нулевое условие ...

если фамилия (введенное имя) пуста, не проверяйте это условие ...

report.member_Lastname.StartsWith(lastname)

если cardnum пуст, не проверять это условие

&& report.member_CardNum == cardnum

Я использую linq для сущностей и не использую linq для sql

var memberreport = from report in eclipse.members
                   join memtomship in eclipse.membertomships on report.member_Id equals memtomship.member_Id
                   join mshoption in eclipse.mshipoptions on memtomship.mshipOption_Id equals mshoption.mshipOption_Id
                   join membershiptypes in eclipse.mshiptypes on mshoption.mshipType_Id equals membershiptypes.mshipType_Id
                   join membershipstatustypes in eclipse.mshipstatustypes on memtomship.mshipStatusType_Id equals membershipstatustypes.mshipStatusType_Id                             
                   where report.member_Lastname.StartsWith(lastname)
                      && report.member_CardNum == cardnum 
                      && report.member_Postcode.StartsWith(postcode)
                      && report.member_Reference.StartsWith(refernce)
                      && report.member_Gender.StartsWith(gender)
                      && membershiptypes.mshipType_Name.StartsWith(membershiptype)
                      && membershipstatustypes.mshipStatusType_Name.StartsWith(membershipstatustypesa)
                      && string.Compare(report.member_Dob,maxage) >= 0
                      && string.Compare(report.member_Dob, minage)< 0
                   select new
                   {
                       report.member_Id,
                       report.member_Lastname,
                       report.member_Firstname,
                       report.member_Postcode,
                       report.member_Reference,
                       report.member_CardNum,
                       report.member_IsBiometric,
                       report.member_Dob,
                       membershiptypes.mshipType_Name,
                       membershipstatustypes.mshipStatusType_Name,
                       memtomship.memberToMship_EndDate
                   };   

Не могли бы вы, ребята, предложить какие-либо идеи и примеры кода для этого ..

Большое спасибо заранее ....

Изменить:

if(!string.IsNullOrEmpty(lastname))
    query = query.Where(r => r.member_Lastname == lastname);

Я хочу что-то подобное выше, я знаю этот запрос, используя linq to sql, но я использую linq to entity

1 Ответ

0 голосов
/ 15 сентября 2011

&& работает останавливается на первом false, поэтому вы можете написать

...                          
where  
   (report.member_Lastname != null && report.member_Lastname.StartsWith(lastname))
&& ...

то же самое с ||и сначала true, поэтому, если вы хотите, чтобы Lastname было нулевым или startwith фамилией, вы можете использовать

...                          
where  
   (report.member_Lastname == null || report.member_Lastname.StartsWith(lastname))
&& ...

то же самое с cardnum и где угодно.Чтобы получить значения, вы можете использовать

report.member_Lastname ?? "yourNullDefault"

при условии, что member_Lastname является строкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...