-1

ist mein Code unten angegeben, und ich bin die folgende Ausgabe bekommen, ist die Ausgabe in Ordnung, aber ich will nur die Ausgabe in einer durch Kommata getrennte Liste von Orten zu formatieren. Wie macht man das?Wie JSON Array von Objekten zu JSON Array von Strings zu konvertieren?

var eventDetails = (from e in db.tb_Event        
         select new 
         { 
         e.EventID, 
         e.tb_Customer.CustomerName, 
         e.StartDate, 
         e.EndDate, 
         loc = (from l in db.tb_EventLocation where 
            l.EventID == e.EventID 
            select new { l.tb_Location.LocationName }) 
            .Distinct(), 
         e.Objective 
        }); 

Die Ausgabe lautet:

[ 
    { 
     "EventID": 1, 
     "CustomerName": "qwe", 
     "StartDate": null, 
     "EndDate": null, 
     "loc": [ 
      { 
       "LocationName": "asd" 
      }, 
      { 
       "LocationName": "zxc" 
      } 
     ], 
     "Objective": "Floor Walkthrough" 
    }, 
    { 
     "EventID": 2, 
     "CustomerName": "rtg", 
     "StartDate": null, 
     "EndDate": null, 
     "loc": [ 
      { 
       "LocationName": "asd" 
      } 
     ], 
     "Objective": "RFP" 
    }, 
    { 
     "EventID": 3, 
     "CustomerName": "zxc", 
     "StartDate": null, 
     "EndDate": null, 
     "loc": [], 
     "Objective": "RFI" 
    } 
] 

I loc als

[{"LocationName":"asd","zxc"}] 

das heißt ein Komma Liste der Standorte getrennt kommen wollen. Wie macht man das?

+0

So mögen Sie „Location“ sein, ein Array wie „loc“, rechts ? –

+0

versuchen Sie mit etwas wie: eventDetails.Select (xx => xx.loc) .ToList() .. könnte in Ordnung sein? –

+0

@ VítorMartins Ja – Prabhjot

Antwort

0

Versuchen ersten Gruppe Standorte und als nehmen alle Gruppen-IDs:

loc = (from l in db.tb_EventLocation 
     where l.EventID == e.EventID 
     group l.tb_Location.LocationName by l.tb_Location.LocationName 
     select new { g.Key}) 
0

Ich habe versucht, dies zu tun, indem sie als unten eine kleine Änderung im Code machen:

var eventDetails = (from e in db.tb_Event 
           select new 
           { 
            e.EventID, 
            e.tb_Customer.CustomerName, 
            e.StartDate, 
            e.EndDate, 
            loc = (from l in db.tb_EventLocation where 
               l.EventID == e.EventID 
               select new { l.tb_Location.LocationName }) 
               .Distinct().ToArray().CombineWith(","), 
            e.Objective 
           }); 

CombineWith eine ist Erweiterungsmethode nur um den Code lesbar zu halten:

private static string CombineWith (this string[] locationNames,string delimiter) 
{ 
    return string.Join(delimiter,locationNames); 
} 

Nur fo r eine Anmerkung:

[{"LocationName":"asd","zxc"}] ist kein gültiger jason. Sie können etwas wie wünschen: [{"LocationName":"asd,zxc"}]

0

ich eine einfache Methode, die eine JArray aus einer Sammlung von Objekten erstellt.

Anmerkung: Die Daten sind die Spalte, die für das Unternehmen

Werfen Sie einen Blick roh json speichert:

private string RawJsonFrom(IEnumerable<TEntity> entities) 
{ 
     JArray array = new JArray(); 
     foreach (vare in entities)    
      array.Add(JObject.Parse(e.Data));    

     return array.ToString(); 
} 
Verwandte Themen