2 Stimmen

Abrufen der maximalen Anzahl von Wiederholungen aus XML mit LINQ

Ich habe eine Xml-Datei mit grundlegenden Informationen über Produkte, mit der folgenden Struktur:

 - products
   - Id 
   - Price
   - ManufacturerId

Und eine weitere, die Daten über Hersteller enthält:

 - manufacturers
   - Id
   - Name

Ich möchte die Top 3 Hersteller mit den meisten Produkten (Herstellername und Anzahl der Produkte) aus der Datei products.xml mit LINQ erhalten.

Edita: Die Datei products.xml sieht wie folgt aus:

<products>
  <row Id="1" Price="1.00" ManufacturerId="3"/>
  <row Id="1" Price="0.99" ManufacturerId="2"/>
</products>

Bei den Feldern handelt es sich um Attribute sowohl für die Produkt- als auch für die Herstellerdatei.

2voto

Jon Skeet Punkte 1325502

Nun, das können Sie herausfinden die Hersteller sind die Besten, ohne dass man ihnen ansieht, wer sie sind. Sie können dann die Details in einer zweiten Abfrage erhalten.

Es wäre hilfreich, wenn Sie einige XML-Beispiele zeigen würden - wir wissen zum Beispiel nicht, ob die Hersteller-ID in einem Attribut oder einem Element steht. Aber es wäre etwas wie:

var top3Ids = products.Elements("row")
                      .GroupBy(x => (string) x.Attribute("ManufacturerId"))
                      .Select(group => new { Id = group.Key,
                                             Count = group.Count() })
                      .OrderByDescending(x => x.Count)
                      .Select(x => x.Id)
                      .Take(3)
                      .ToList();

var top3 = from element in manufacturers.Elements("row")
           where top3Ids.Contains((string) element.Attribute("Id"))
           select (string) element.Attribute("Name");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X