Forums Neueste Beiträge
 

"knifflige" LINQ-Abfrage

19/03/2009 - 23:47 von Carsten Ilwig | Report spam
Hallo Leute,

ich komme bei folgendem Problem nicht weiter.
Ich habe eine strukturierte Auflistung von verschachtelten Objekten aus der
ich von allen Objekten aus der untersten Objektebene den Wert von
"OrderNumber" benötige.
Da ich mich gerade in LINQ einarbeite, wollte ich diese Aufgabe auch damit
lösen.
Leider komme ich nicht wirklich weiter.

Hier ein auf das Notwendige gekürztes Beispiel:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MULTISOFT.Optimierung
{
public class MySubItem
{
public string OrderNumber; //Der Wert dieser Eigenschaft soll
ausgelesen werden.
}
public class MyMainItem
{
public MySubItem SubItem;
}
public class Test
{
private SortedDictionary<string, List<MyMainItem>> _items = new
SortedDictionary<string,List<MyMainItem>>();
public Test()
{
#region Testauflistung erstellen
_items.Add("1", new List<MyMainItem>(new MyMainItem[]
{
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0815" } },
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0822" } },
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0825" } }
}));
_items.Add("2", new List<MyMainItem>(new MyMainItem[]
{
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0816" } },
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0916" } }
}));
_items.Add("3", new List<MyMainItem>(new MyMainItem[]
{
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0817" } },
new MyMainItem() { SubItem = new MySubItem() { OrderNumber =
"0822" } }
}));
_items.Add("4", new List<MyMainItem>(new MyMainItem[] { new
MyMainItem() { SubItem = new MySubItem() { OrderNumber = "0815" } } }));
#endregion

//Hier sollen alle OrderNumber ausgelesen werden, aber so, dass jede
OrderNumber nur einmal in der Ergebnisliste vorhanden ist.
var orderNumbersUnique = (from _myData in _items.Values select
_myData).Distinct().ToArray(); //Diese Abfrage liefert nicht das gewünschte
Ergebnis

ComboBox cB_orderNumbers = new ComboBox();
//Eine eindeutige Auflistung aller "OrderNumber" zu der ComboBox
hinzufügen.
cB_orderNumbers.Items.AddRange(orderNumbersUnique);
}
}
}

Kann mir da bitte jemand weiterhelfen, wie ich die Abfrage mit LINQ aufbauen
muss, damit das gewünschte Ergebnis dabei rauskommt?

Vielen Dank schon mal im Voraus
Carsten
 

Lesen sie die antworten

#1 Peter Fleischer
20/03/2009 - 08:13 | Warnen spam
"Carsten Ilwig" schrieb im Newsbeitrag
news:%

ich komme bei folgendem Problem nicht weiter.
...
//Hier sollen alle OrderNumber ausgelesen werden, aber so, dass
jede OrderNumber nur einmal in der Ergebnisliste vorhanden ist.
var orderNumbersUnique = (from _myData in _items.Values select
_myData).Distinct().ToArray(); //Diese Abfrage liefert nicht das
gewünschte Ergebnis



Hi Carsten,
versuche es mal so:

var orderNumbersUnique = (from _myData in _items.Values from mainorder in
_myData select mainorder.SubItem.OrderNumber).Distinct().ToArray();

Viele Grüsse
Peter

Ähnliche fragen