2014-11-05 68 views
1

我有以下LINQ表達式,我需要連接字符串,但是,如果隨後的字符串中有值,我只想顯示連字符。例如,如果只有一個Wing和一個Floor,我應該只顯示East-3。我試圖插入表情裏面的一些string.IsNullOrEmpty(),但是編譯器會抱怨在選擇關鍵字...lambda內部的字符串條件

param.Patient.PatientGroups.Select(g => g.Wing + "-" + g.Floor + "-" + g.Room + "-" + g.Bed + "-" + g.Table).FirstOrDefault() 
+2

您正在使用什麼類型的LINQ提供程序,LINQ-To-Objects或數據庫驅動的提供程序? – 2014-11-05 15:22:17

回答

7

你可以使用string.Join,但你必須到田間地頭轉換爲數組第一:

param.Patient.PatientGroups 
    .Select(g => String.Join("-" 
          , (new string[] { g.Wing, g.Floor, g.Room, g.Bed, g.Table }) 
           .Where(x => !string.IsNullOrEmpty(x)) 
          ) 
      ).FirstOrDefault() 
+0

+1 ...爲什麼當[String.Join](http://msdn.microsoft.com/zh-cn/library/dd783876%28v=vs.110%29.aspx)需要'.ToArray'調用時已經接受枚舉? – 2014-11-05 15:37:39

+0

@AlexeiLevenkov:好點。錯過了超載。 – 2014-11-05 15:38:16

+0

@AlexeiLevenkov:固定。並感謝+1。 – 2014-11-05 15:38:57