Dies ist meine Linq-Syntax, die ich für mein Entitätsmodell verwende
IQueryable<string> objEmployee = null;
objEmployee = from res in _db.EMPLOYEEs
where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
select res.EMAIL;
Wie kann ich mehrere Spalten auswählen? Als ob ich auch res.ID auswählen möchte. Und wie kann ich diese erhalten? IQueryable wird meiner Meinung nach nicht funktionieren. Und das nennt man Linq to SQL - richtig?
c#
linq
entity-framework
Riz
quelle
quelle
Antworten:
Wie aus den anderen Antworten hervorgeht, müssen Sie einen anonymen Typ verwenden.
Was die Syntax betrifft, bevorzuge ich persönlich die Verkettung von Methoden. Das Äquivalent zur Verkettung der Methode wäre:
AFAIK, die deklarative LINQ-Syntax wird beim Kompilieren in eine ähnliche Methodenaufrufkette konvertiert.
AKTUALISIEREN
Wenn Sie das gesamte Objekt möchten, müssen Sie nur den Aufruf von weglassen
Select()
, d. H.quelle
Sie können anonyme Typen verwenden, zum Beispiel:
quelle
select new { Diff = (DateTime.Now - debt.ClaimDate), Amount = debt.Amount}
. Das in der Antwort verwendete Formular ist eine Kurzform, bei der der Mitgliedsname im Initialisierungsausdruck als Feldname vom anonymen Typ verwendet wird. ZBnew {res.EMAIL, res.USER_NAME}
ist eine Abkürzung fürnew {EMAIL = res.EMAIL, USER_NAME = res.USER_NAME}
. Falls es einen Ausdruck gibt, wie in Ihrem Fall mit Datumsangaben, gilt die Kurzschrift nicht, daher ein Compilerfehler.ODER Sie können verwenden
Erklärung:
Wählen Sie Mitarbeiter aus der Datenbank als res.
Filtern Sie die Mitarbeiterdetails gemäß der Where-Bedingung.
Wählen Sie die erforderlichen Felder aus dem Mitarbeiterobjekt aus, indem Sie mit new {} ein anonymes Objekt erstellen
quelle