2012-04-05 66 views
1

這是我的Linq查詢。這工作正常。問題是如果任何人在表中沒有姓氏,那麼該行不會顯示在結果中。我想如果有人沒有姓,那麼它會是User_Name = First Name +「」。這個LinQ有什麼問題?

var ShowFiles = from cm in db.Contact_Masters 
         join ta in db.Topic_Accesses on cm.Contact_ID equals ta.Contact_ID 
         join RelMess in db.Rel_Topics_Messages on ta.Topic_ID equals RelMess.Topic_ID 
         join Messages in db.Messages on RelMess.Message_ID equals Messages.Message_ID 
         join Files in db.Files on Messages.Message_ID equals Files.Message_ID 
         join FileType in db.Lkup_Files_Extensions on Files.TypeID equals FileType.TypeID 
         join FileVersion in db.File_Versions on Files.File_ID equals FileVersion.File_ID 
         join pcf in db.Contact_Personals on Messages.Contact_ID equals pcf.Contact_ID 
         where pcf.Personal_Type == new Guid("30102333-2104-40D7-8913-DC9048225D12") // Personal_Type = First Name ID 
         join pcl in db.Contact_Personals on Messages.Contact_ID equals pcl.Contact_ID 
         where pcl.Personal_Type == new Guid("9058F268-B707-4B0A-86E5-26E83A4BC1F5") // Personal_Type = Last Name ID 

         where cm.Contact_ID == new Guid(ContactID) && ids.Contains(RelMess.Topic_ID)// parameters 
         && FileVersion.IsActive == true && Messages.IsActive == true && FileVersion.Version_ID == (from FileV in db.File_Versions 
                                where FileV.File_ID == Files.File_ID 
                                && FileV.Message_ID == Messages.Message_ID 
                                && FileV.IsActive == true 
                                select FileV.Version_ID).Max() 
         select new 
         { 
          File_Name = Convert.ToString(Files.File_Name), 
          Version_ID = Convert.ToString(FileVersion.Version_ID), 
          File_Size = Convert.ToString(FileVersion.File_Size), 
          Created = Convert.ToString(FileVersion.Created), 
          Type = FileType.Type, 
          File_URL = FileVersion.File_URL, 
          File_ID = Convert.ToString(FileVersion.File_ID), 
          User_Name = pcf.Value + " " + pcl.Value 
         }; 

謝謝
Nahid

+0

只是一些野生的猜測:如果姓氏不在數據庫中(因爲它是'null')就是設置給定gui的'pcl.Personal_Type' d? – Oliver 2012-04-05 10:13:24

回答

5

嘗試以下操作:

User_Name = pcf.Value + 
    (pcf.Value != null && pcf.Value.Trim() != string.Empty ? " " + pcl.Value : "") 

編輯:刪除IsNullOrWhiteSpace的使用情況,感謝亞採

+0

這是否真的轉化爲SQL? – 2012-04-05 10:20:46

+0

它應該做的是,如果IsNullOrWhiteSpace不被Linq-To-Sql支持,那麼你可以通過改變括號中的所有內容來模擬它的作用:(pcl.Value!= null && pcl.Value!= string.Empty ?「」+ pcl.Value:「」) – mattytommo 2012-04-05 10:24:56

+1

這應該工作,而不是IsNullOrWhiteSpace():http://stackoverflow.com/questions/9606979/string-isnullorwhitespace-in-linq-expression – 2012-04-05 10:26:31