Autor Beitrag
moori64
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Fr 02.12.11 13:45 
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

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
// Dies ist das Beispiel für eine Konsolenanwendung entferne ich die where bedingung 
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 user profile iconKha: C#-Tags hinzugefügt
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 02.12.11 14:58 
Hi,
wie heißt nochmal der Vergleichsoperator in C#? Probiere es mal so:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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>:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 02.12.11 17:08 
In Linq-Ausdrücken mußt du den C#-Operator benutzen, d.h. && (anstatt 'and').
moori64 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: 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.