2016-05-07 2 views
0

Ich habe folgende SQL-AbfrageLinq Ausdrücke von einfachen SQL, scheint, gibt es Einschränkungen in Linq

select * from one a 
    inner join one b 
     on 
     (
     a.weekday=b.weekday 
     and a.starttime =b.starttime 
     and a.sl>b.sl 
     ) 
    where a.weekday=b.weekday and a.starttime=b.starttime and a.endtime=b.endtime 

Und ich will es sowohl Lambda-Ausdruck und SQL-ähnliche Syntax Linq-Anweisung umgewandelt werden. Ich habe es versucht, aber es scheint etwas schwierig zu sein. Ich habe auch ein Tool wie sqltolinq verwendet, aber nicht zu funktionieren scheint.

Das Problem ist mit SQL-ähnliche Syntax ist, dass meine Abfrage s Join hat mehrere Elemente, die equal und greater than Operator enthält.

wird jede Hilfe nur

+0

'" Ich versuchte es, aber es scheint wie etwas schwierig "' - Was hast du versucht? Wie ist es gescheitert? Haben Sie einen Fehler erhalten? Unerwartete Ergebnisse? – David

+0

Nein, wenn ich versuche, es gibt mir Syntaxfehler. Ich bin zwischen zwei gleichen Tisch. In Join-Anweisung ist also die innere und äußere Quelle gleich. also wie kann ich es in dritten Parameter auf Join verwenden, bekommen Sie, was ich sage? – Alex

Antwort

3

LINQ unterstützt equijoins geschätzt werden, aber man konnte für den Rest eine Equijoin für den Wochentag und Startzeit, und endtime Teile und dann eine where-Klausel tun.

// Names changed to be more idiomatic where feasible. We have no 
// idea what "sl" means. 
var query = from a in db.TableA 
      join b in db.TableB 
       on new { a.WeekDay, a.StartTime, a.EndTime } 
       equals new { b.WeekDay, b.StartTime, b.EndTime } 
      where a.Sl > b.Sl 
      select ...; 
+0

können Sie auch bitte Lambda-Ausdruck verwandte Syntax hinzufügen? – Alex

+1

@Alex: Warum? Es wird klarer mit dem Abfrageausdruck Formular ... –

+0

Ich bevorzuge Abfrage Ausdruck Form zu, aber ich mag es zu sehen, wie es mit Lambda-Ausdruck getan – Alex