Linq to Object - Hierarchical Data

11/12/2007 - 12:45 von Tine | Report spam
Hallo alle zusammen,

Ich versuche gerade mit Linq to Object Daten abzufragen. Da meine Klasse zu
groß ist um das hier zu veranschaulichen habe ich ein kleines Beispiel
erstellt um das Problem darzustellen.

Gegeben ist ein Klasse Person mit den Eigenschaften „Nachname, Vorname, und
eine Liste von Nummern. Im DataGridView möchte ich für jede Nummer eine Zeile
mit dem jeweiligen Namen anzeigen (auch wenn dieser dadurch mehrfach
angezeigt wird)

Leider habe ich bisher keine Lösung gefunden und hoffe auf euere Hilfe.

Hier der Beispielcode:

List<Person> listPerson = new List<Person>();

listPerson.Add(new Person
{
Lastname = "Müller",
Prename = "Maria",
Numbers = new List<string>(new[] { "06732-67892", "0176-300678",
"06732-67891" })
});

listPerson.Add(new Person
{
Lastname = "Müller",
Prename = "Manfred",
Numbers = new List<string>(new[] { "06632-67892", "0177-350674",
"06632-67891" })
});

listPerson.Add(new Person
{
Lastname = "Maier",
Prename = "Paula",
Numbers = new List<string>(new[] { "0177-300678", "06532-67891" })
});

listPerson.Add(new Person
{
Lastname = "Schön",
Prename = "Lars",
Numbers = new List<string>(new[] { "06732-67892" })
});

var result = listPerson
.Where(p => p.Lastname.StartsWith("M"))
.Select(p => new Person
{
Lastname = p.Lastname,
Prename = p.Prename
});

dataGridView1.DataSource = result.ToList();

Grüße

Christine
 

Lesen sie die antworten

#1 Carl Schaffert
11/12/2007 - 14:21 | Warnen spam
Hallo Tine,

um deine Daten flach zu klopfen machs mal so:

var result from pers in listPerson
from nr in pers.Numbers
where pers.Lastname.StartsWith("M")
select new { pers.Prename, pers.Lastname, nr };

dataGridView1.DataSource = result.ToList();

dann klappts auch mit dem Nachbarn *g*

àààhhh, für den Hausgebrauch gehts wohl so...

I hope that helps ;-) Gruß Carl

Ähnliche fragen