Autor Beitrag
eraser_seb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: Sa 31.03.12 17:12 
Hallo leute,

Ich beschäftige mich schin ein paar tagen mit LINQ TO SQL aber habe noch so meine Probleme damit.

Ich will mir Dynamisch abfragen basteln.

Beispiel.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
Table<CTabelleDateien> tblDateien = Program.DatenbankVerbindung.GetTable<CTabelleDateien>();
            Table<CTabelleDateienSchlagworte> tblDateienSchlagworte = Program.DatenbankVerbindung.GetTable<CTabelleDateienSchlagworte>();

            var qDateien =
                from fDateien in tblDateien
                where fDateien.ArchivDSN == varArchiFDSN
                select new
                {
                    fDateien.DSN,
                    fDateien.ArchivDSN,
                    fDateien.Pfad,
                    fDateien.Name,
                    fDateien.BearbeitungsDatum,
                    fDateien.ErstellDatum,
                };
            
            if (sSchlagWort.Trim() != "")
            {    /*               
                 SELECT  * 
                 FROM Dateien 
                 WHERE ArchivDSN = @varArchiFDSN
                       AND DSN IN( SELECT DateienSchlagworte.DateienDSN 
                                   FROM DateienSchlagworte 
                                   WHERE Wort LIKE '%Text%'
                                 )              
                 */

            }


Die SQL Anweisung würe ich gern als Linq To Sql anweisungen umzuwandeln, bekomme es aber einfach nicht auf die reihe.
Kann mir jemand von euch mal helfen?

Danke
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: So 01.04.12 11:46 
Hallo eraser_seb,

eine SQL-'IN'-Anweisung wird in Linq2SQL andersherum mittels der Contains-Methode umgesetzt, d.h. aus "x IN y" wird:
ausblenden C#-Quelltext
1:
where y.Contains(x)					

s.a. wekeroad.com/2008/02...ies-with-linq-to-sql

Und auch die SQL-'LIKE'-Anweisung kannst du mittels folgender Methoden umsetzen:
- LIKE 'X%': value.StartsWith("X")
- LIKE '%X': value.EndsWith("X")
- LIKE '%X%': value.Contains("X")

Und dann noch mittels der Unterabfrage kombiniert, solle in etwa so aussehen (ungetestet):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
from fDatei in tblDateien
where fDatei.ArchivDSN == varArchiFDSN && 
      (from word in DateienSchlagworte
       where word.Contains("Text")
       select word).Contains(fDatei.DSN)
select new
{
  // ...
}

P.S. In der 'from'-Klausel sollte der Variablenname in Singular (Einzahl) benutzt werden, also 'fDatei' (anstatt 'fDateien') - da dies analog zu einer 'foreach ... in'-Schleife zu sehen ist.
eraser_seb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: So 01.04.12 12:05 
Danke schön.