| 

.NET C# Java Javascript Exception

1
Es gibt zwei Klassen:

class Schuldner { int ID; string Name; /* lauter weitere Felder */ }
class Gläubiger { int ID; string Name; /* lauter weitere Felder */ }


Jetzt sollen alle Schuldner und alle Gläubiger in der Datenbank sortiert nach dem Namen in einer ListView-Tabelle ausgegeben werden. Ich könnte ja zwei separate LINQ-Abfragen machen und hätte dann zwei Listen, aber ich will die ja zusammen in einer Liste sortiert haben (obwohl die Objekte einen unterschiedlichen Typ haben). Ich will auch eigentlich nicht zwei LINQ-Abfragen machen, weil mir das zu viel Performance kostet. Wie kann ich das performant machen?
31.07.2009
jor 791 2 7
1
Wie schaut die Datenbank dazu aus? Sind Schuldner und Gläubiger in einer Tabelle oder liegen diese in separaten Tabellen?
Was ist eine ListView-Tabelle? ListView oder DataGridView - was meinst du?
gfoidl 31.07.2009
1
Vergiss den obigen Kommentar. Steht doch im Titel - hab ich übersehen.
Kann man Kommentare löschen ?!
gfoidl 31.07.2009
1 Antwort
3
Du kannst eine Abfrage erstellen indem du eine zusätzliche Klasse definierst:
class Person
{
public int ID { get; set; }
public string Name { get; set; }
/* weitere gemeinsame Eigenschaften */
}


Die Abfrage schaut dann so aus und verwendet die Union-Erweiterungsmethode:
List<Person> personList = null;
using (DataClasses1DataContext dc = new DataClasses1DataContext())
{
var schuldner = from s in dc.Schuldner
select new Person { ID = s.ID, Name = s.Name };

var gläubiger = from g in dc.Gläubiger
select new Person { ID = g.ID, Name = g.Name };

personList = schuldner.Union(gläubiger).ToList();
/* personList kann weiter verwendet werden */
}

Die Daten in personList können dann für das ListView verwendet werden.
31.07.2009
gfoidl 9,4k 3 5
1
Verstehe! Ich habe aber das Union in Concat geändert.
jor 01.08.2009
2
Union entspricht im SQL "UNION" während Concat "UNION ALL" entspricht. D.h. mit Concat werden auch Duplikate zurückgegeben. Dies ist zu berücksichtigen.
gfoidl 01.08.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH