To jest moja składnia Linq, której używam do mojego modelu jednostki
IQueryable<string> objEmployee = null;
objEmployee = from res in _db.EMPLOYEEs
where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
select res.EMAIL;
Jak mogę wybrać wiele kolumn? Tak jak chcę również wybrać res.ID. Jak mogę je otrzymać? Myślę, że IQueryable nie zadziała. A to się nazywa Linq to SQL - prawda?
c#
linq
entity-framework
Riz
źródło
źródło
Odpowiedzi:
Jak wskazywały inne odpowiedzi, musisz użyć typu anonimowego.
Jeśli chodzi o składnię, osobiście zdecydowanie wolę łańcuchowanie metod. Równoważna metoda łączenia łańcuchowego byłaby następująca:
AFAIK, deklaratywna składnia LINQ jest konwertowana na łańcuch wywołań metody podobny do tego, gdy jest kompilowany.
AKTUALIZACJA
Jeśli chcesz mieć cały obiekt, wystarczy pominąć wywołanie
Select()
npźródło
Możesz użyć anonimowych typów, na przykład:
źródło
select new { Diff = (DateTime.Now - debt.ClaimDate), Amount = debt.Amount}
. Forma użyta w odpowiedzi jest skrótem, w którym nazwa członka w wyrażeniu inicjującym jest używana jako nazwa pola typu anonimowego. Np.new {res.EMAIL, res.USER_NAME}
To skrót odnew {EMAIL = res.EMAIL, USER_NAME = res.USER_NAME}
. W przypadku, gdy istnieje wyrażenie, jak w twoim przypadku z datami - skrót nie ma zastosowania, stąd błąd kompilatora.LUB możesz użyć
Wyjaśnienie:
Wybierz pracownika z bazy danych jako res.
Filtruj dane pracownika zgodnie z warunkiem gdzie.
Wybierz wymagane pola z obiektu pracownika, tworząc obiekt anonimowy przy użyciu nowego {}
źródło