2016-06-29 17 views
0

Ich verkette verschiedene Adressfelder in meiner LINQ-Abfrage, um eine Adresse mit Zusammenführung zu erhalten.Concat ohne Leerzeichen in C# Linq

public static IList GetOfferList() 
{ 
    using (var objEntity = new dbContext()) 
    { 
     string[] ListCategoryID = CategoryID.Split(','); 
     return (from TBL.OfferMaster 
       select new 
       { 
       PrimaryID = OM.OfferID, 
       Address = OM.StreetAddress + " ," + OM.City + " ," + OM.State + " ," + OM.Country + " ," + OM.ZipCode, 
       }).ToList(); 
    } 
} 

Derzeit bekomme ich Felder wie

Address=Fákafen 11 ,Reykjavik , ,Iceland ,108, 

Oder

Address: " , , , ,",; 

Ich möchte

Address=Fákafen 11 ,Reykjavik ,Iceland ,108 

bedeutet leere Felder nicht erforderlich.

+2

Fügen Sie eine Überprüfung von 'string.IsNullOrEmpty()' hinzu. –

+0

Ich nehme an, das ist LINQ to SQL? –

+0

Verwenden Sie entweder IsNullOrEmpty() oder überprüfen Sie die Stringlänge (str.length! = 0). Ich würde vorschlagen, mit IsNullOrEmpty() zu gehen, wie von Shaunak vorgeschlagen. – Aby

Antwort

0

verwenden:

var results = (from TBL.OfferMaster 
      select new 
      { 
       PrimaryID = OM.OfferID, 
       Address = String.Join(", ", (new string[] { OM.StreetAddress, OM.City, OM.State, OM.Country, OM.ZipCode }) 
               .Where(x => !String.IsNullOrWhiteSpace(x))), 
      }).ToList(); 
1

Ich würde dies tun.

Address = string.Join(" ," (new string[] {OM.StreetAddress, OM.City, OM.State, OM.Country, OM.ZipCode}) 
          .Where(x=> !string.IsNullOrEmpty(x))); 
+1

Vielleicht möchten Sie den Raum nach dem Komma setzen. Es ist die häufigere Verwendung;) – Nyerguds

+0

Idealerweise ja, Sie haben Recht. OP im gezeigten Beispiel Leerzeichen vor ',' –

+0

Hah, wow, tut es. Das habe ich vermisst. – Nyerguds