verwendetes Datenbanksystem:MSSQL 2005 SP3
Hallo zusammen,
ich habe eine Klasse die mir Daten aus der Datenbank läd und mir ins Result quasi die Daten liefert, welche ich dann weiter verwende.
Leider bekomme ich das nicht so hin wie gewünscht.
Folgendes habe ich schon gemacht (funktioniert)
public List<Data> GetLieferanten(string connString)
{
var result = new List<Data>();
using (InvoiceClientEntities db = new InvoiceClientEntities(connString))
{
var x = from tab in db.Data
select tab;
if (x.Count() > 0)
result = x.ToList();
}
return result;
}
Das liefert mir die gesamte Liste der Lieferanten aus der Tabelle Data zurück inkl. aller Spalten. Das möchte ich aber nicht bez. ich muss eig. noch eine Liste aufbauen, wo ich noch Spalten direkt mit in das Grid gebe.
Zweck des ganzen ist noch ein Button der im Grid liegt, welchen ich mit einem Hyperlink befülle.
Als normale Funktion klappt das ohne Probleme, jedoch nicht mit einer Klasse wie hier beschrieben.
Hier der Code den ich angefangen habe:
public List<Data> GetLieferanten(string connString)
{
var result = new List<Data>();
using (InvoiceClientEntities db = new InvoiceClientEntities(connString))
{
var x = from tab in db.Data
select tab;
if (x.Count() > 0)
foreach (var items in x)
{
Services.Lists.InvoiceData l = new Services.Lists.InvoiceData();
l.ID = (int)items.ID;
l.iNumber = items.iNumber;
l.LName = items.LName;
l.PDFShowText = "PDF";
l.PDFShowNavUrl = "hier der Link dann der noch zusammengesetzt wird in einer anderen classe";
xlist.Add(l);
}
result = xlist.ToList();
}
return result;
}
Die Klasse InvoiceData ist eine normale Klasse wo einfach nur die Colums stehen mit {get; set;}
bei xlist.ToList() bekomme ich immer den Fehler:
Eine implizite Konvertierung vom Typ "System.Collections.Generic.List<Services.Lists.InvoiceData>" in "System.Collections.Generic.List<Infrastructure.Db.Data>" ist nicht möglich.
Jemand ne Idee ? Steh da etwas auf dem Schlauch
Gruß
Tom
Hallo tom-cat,
die Fehlermeldung sagt alles.
result
ist vom Typ List<Data>
xlist.ToList()
ist vom Typ List<InvoiceData>
edit: aber Achtung. Wenn du deine Methode des öfteren ausführst wird xlist immer und immer wieder gefüllt da es als globale Variable Instanzvariable definiert ist.
Gruß
Michael
Dank dir für die schnelle Rückmeldung.
Wie würdest du denn die list befüllen ? Bräuchte da mal nen kleinen Anstoß 😃
Hallo,
Wie würdest du denn die list befüllen ? Bräuchte da mal nen kleinen Anstoß 😃
Was muro richtig erkennt hat ist dass du diese xlist ausserhalb der Methode definiert hast.
Damit werden bei jedem Methodenaufruf die Elemente hinten angehängt.
Beim ersten Mal ist das noch ok, aber nachher hast du die Dinger dann Doppelt und Dreifach.
D.h. Entweder du rufst einfach Clear auf bevor du die Liste wieder befüllst oder du erstellst sie jedes mal neu.
Zudem kannst du dir die Zeile
if (x.Count() > 0)
sparen, da die Foreach-Schleife ohnehin nix macht wenn kein Element drinnen ist.
Gruss
Michael
Wie würdest du denn die list befüllen ?
I) Lieferantenanzahl ändert sich nie:
Lass es wie es ist und baue eine Abfrage ein dass die Liste nur einmal gefüllt wird.
II) Lieferantenanzahl ändert sich dauernd:
Deklariere xlist in der Methode (damit sie bei jedem Aufruf sicher neu erstellt wird) und mach es wie gehabt.