2015-08-25 22 views
0

我在C#中做一個linq查詢,一切正常,但當我在MVC中調用此方法崩潰,它不接受空值我想空值是「」Defaultifempty給我空值,我想他們字符串「」

var referralDocs = (from d in _dc.ReferralDoctors 
           join mlog in _dc.LogPS.Where(x => x.id_action == 1) 
           on d.ReferralDoctorID equals mlog.id_PS into mlog 

           join _Category in _dc.ReferringDoctorCategories 
           on d.ReferringDoctorsCategory equals _Category.CategoryID into CatGroup 
           from _Category in CatGroup.DefaultIfEmpty() 

           where 
           d.DoctorID == doctorID && d.isDeleted == false && (d.NotificationEmail.Replace(" ", "").ToLower().Contains(search) 
           || d.PracticePhone.Replace(" ", "").ToLower().Contains(search) || d.LastName.Replace(" ", "").ToLower().Contains(search) || d.FirstName.Replace(" ", "").ToLower().Contains(search)) 
           select new ReferralDoctorInfo() 
                 { 
                  BirthDate = d.BirthDate, 
                  DoctorID = d.DoctorID, 
                  FirstName = d.FirstName != null ? d.FirstName.Trim().Replace("\r\n", "").Replace("\r", "").Replace("\n", "") : "", 
                  HasOptOutNews = d.HasOptOutNews, 
                  isDeleted = d.isDeleted, 
                  LastName = d.LastName != null ? d.LastName.Trim().Replace("\r\n", "").Replace("\r", "").Replace("\n", "") : "",                 
                  NotificationEmail = d.NotificationEmail != null ? d.NotificationEmail.Trim().Replace("\r\n", "").Replace("\r", "").Replace("\n", "") : "",                 
                  PracticePhone = d.PracticePhone, 
                  PracticeName = d.PracticeName != null ? d.PracticeName.Trim().Replace("\r\n", "").Replace("\r", "").Replace("\n", "") : "", 
                  ReferralDoctorID = d.ReferralDoctorID, 
                  lastOptOutDatetime = mlog.Where(x => x.client_id == doctorID && x.id_PS == d.ReferralDoctorID).Max(y => y.date), 
                  DoctorCategory = _Category 

                 }); 

好,我有這樣的選擇:DoctorCategory = _Category

,當我得到這個對象在MVC這個對象的第一行的對象應具備的所有值和工作正常,但第二行沒有值,所以它給了我空值,這是好的,因爲我想要那些沒有類別的人,但是在那一點上崩潰了,並且t herefore我想他們是「」

我想在DefaultifEmpty或_Category的東西,讓我改變空值

像這樣

ReferingDoctorCategory = _Category.Name != null ? _Category.Name : "", 

這個問題是不爲對象的工作,所以如果有人想同樣的事情,我不能用它

+1

您可以發佈整個語句嗎? –

+1

不是'DefaultIfEmpty()'接受單個參數嗎?你已經嘗試過'.DefaultIfEmpty(String.Empty)'? – Eris

+0

@Eris我試過,但沒有工作我已經找到了答案,謝謝! – FFHanzel

回答

0

爲我,我找到了答案

DoctorCategory = _Category ?? new ReferringDoctorCategory() 

這並不會改變每一行都爲null,但它確實將每一行都設置爲空,並且以這種方式MVC不會崩潰