Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Linq to SQL
moori64 - Fr 02.12.11 13:45
Titel: Linq to SQL
Hallo,
beim meinen Übungen bin ich auf Linq to Sql gestoßen.
Leider funktioniert die where abfrage nicht so wie ich mir das denke.
Und warum kann mann so ein statemant nur in einer konsolenanwendung
ausprobieren. Ich hatte das umgebaut und wollte es in einer form einbetten,
aber ohne erfolg.
bei dieser abfrage habe ich 3 tabellen in der tabelle spieler ist ein Fremdschlüssel der tabelle mannschaft eingebaut des weiteren gibt es noch eine tabelle marktwert.
wie kann ich nun die abfrage in eine form einbetten und die where bedingung so umbauen das die beiden fremdschlüssel mit angezogen werden.
eigentlich möchte ich eine bundesligamannschaft in eine listbox auswählen und dann ein datagrid mit den daten das ausgewählten mannschaftspielers füllen , wobei der marktwert mit angezeigt werden soll. da dachte ich mir eigentlich das linq für mich das beste wäre .
oder ist mein ansatz falsch ?
Tabelle Spieler ,Mannschaft, Marktwert
FK_Marktwert und FK_Mannschaft befindet sich in der Tabelle Spieler
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| funktioniert es. using ( DataDataContext db = new DataDataContext()) { List<Spieler> data = (from c in db.Spieler where c.Mannschaft.id = c.Spieler.FK_Mannschaft and c.Marktwert.id = c.Spieler.FK_Marktwert select c).ToList();
for (int i = 0; i < data.Count; i++) { Console.WriteLine(data[i].Name); } }
Console.ReadKey(); } |
Moderiert von
Kha: C#-Tags hinzugefügt
Trashkid2000 - Fr 02.12.11 14:58
Hi,
wie heißt nochmal der Vergleichsoperator in C#? Probiere es mal so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| using (DataDataContext db = new DataDataContext()) { List<Spieler> data = (from c in db.Spieler where c.Mannschaft.id == c.Spieler.FK_Mannschaft and c.Marktwert.id == c.Spieler.FK_Marktwert select c). ToList(); |
So, und warum sollte das Ganze nur in einer Consolen-Anwendung funktionieren??
Th69 - Fr 02.12.11 16:06
Außerdem solltest du nur eine List<T> benutzen, wenn du die auch wirklich benötigst.
In deinem Fall reicht eine einfache foreach-Schleife auf dem Rückgabetyp IQueryable<T>:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| var data = from c in db.Spieler select c;
foreach(Spieler spieler in data) Console.WriteLine(spieler.Name); |
moori64 - Fr 02.12.11 16:16
Hallo Marko,
auch so funktioniert es leider nicht, ich möchte aus der Tabelle Manschaft das Feld id
ansprechen und aus der Tabelle Marktwert ebenfalls das feld id.
ich dachte das es in sql ebenfalls das schlüsselwort "and" gibt.
gruß uwe
Th69 - Fr 02.12.11 17:08
In Linq-Ausdrücken mußt du den C#-Operator benutzen, d.h. && (anstatt 'and').
moori64 - Fr 02.12.11 19:10
hallo,
alles umgebaut und so funktioniert es auch , nun werde ich mal versuchen das in die form zu bekommen, besten dank für euere mühe und ich wünsche euch schönes wochenende.
viele grüße uwe
im übrigen habe ich diese übung aus der lern cd von video2brain. ist sehr zu empfehlen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!