Piszę instrukcję LINQ do SQL i dążę do standardowej składni normalnego połączenia wewnętrznego z ON
klauzulą w języku C #.
Jak reprezentujesz następujące elementy w LINQ to SQL:
select DealerContact.*
from Dealer
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Odpowiedzi:
To idzie mniej więcej tak:
Byłoby miło mieć rozsądne nazwy i pola dla swoich tabel dla lepszego przykładu. :)
Aktualizacja
Myślę, że dla twojego zapytania może to być bardziej odpowiednie:
Ponieważ szukasz kontaktów, a nie sprzedawców.
źródło
from c or from t1
A ponieważ wolę składnię łańcucha wyrażeń, oto jak to zrobić:
źródło
Aby rozszerzyć składnię łańcucha wyrażeń, odpowiedz o Clever Human:
Jeśli chcesz robić rzeczy (np. Filtrować lub wybierać) na polach z obu tabel, które są ze sobą łączone - zamiast tylko na jednej z tych dwóch tabel - możesz utworzyć nowy obiekt w wyrażeniu lambda końcowego parametru do metody Join zawierające obie te tabele, na przykład:
Interesującą częścią jest wyrażenie lambda w wierszu 4 tego przykładu:
... gdzie budujemy nowy obiekt typu anonimowego, który ma jako właściwości rekordy DealerContact i Dealer wraz ze wszystkimi ich polami.
Następnie możemy użyć pól z tych rekordów podczas filtrowania i wybierania wyników, jak pokazano w dalszej części przykładu, który używa
dc_d
jako nazwy zbudowanego przez nas anonimowego obiektu, który ma zarówno właściwości DealerContact, jak i Dealer jako swoje właściwości.źródło
źródło
ContactStatus
to naprawdę wyliczenie ic.StatusID
tak naprawdę nie jest to identyfikator, ale wartość liczbowa wyliczenia. Jeśli mam rację,(ContactStatus)c.StatusID
to tak naprawdę po prostu wyrzuca liczbę całkowitą do wyliczenia.Użyj operatora Linq Join :
źródło
Tworzysz klucz obcy, a LINQ-to-SQL tworzy dla ciebie właściwości nawigacji. Każdy
Dealer
będzie wtedy miał kolekcję,DealerContacts
którą możesz wybierać, filtrować i manipulować.lub
Jeśli nie korzystasz z właściwości nawigacji, tracisz jedną z głównych zalet LINQ-to-SQL - część, która odwzorowuje wykres obiektów.
źródło
w zasadzie operator łączenia LINQ nie zapewnia korzyści dla SQL. Czyli następujące zapytanie
spowoduje INNER JOIN w SQL
Join jest użyteczny dla IEnumerable <>, ponieważ jest bardziej wydajny:
klauzula zostanie ponownie wykonana dla każdego dealera Ale w przypadku IQueryable <> tak nie jest. Również dołączanie jest mniej elastyczne.
źródło
W rzeczywistości często lepiej nie dołączać, to znaczy w Linq. Gdy istnieją właściwości nawigacji, bardzo zwięzły sposób na napisanie instrukcji linq to:
Przekłada się to na klauzulę where:
źródło
SelectMany()
.Użyj sprzężeń LINQ, aby wykonać łączenie wewnętrzne.
źródło
Spróbuj tego :
źródło
źródło
Gdzie tabele studentów i kursów mają związek między kluczem podstawowym a kluczem obcym
źródło
spróbuj zamiast tego
źródło
źródło
źródło
Wpisz nazwy tabel i zainicjuj zaznaczenie, aby uzyskać wynik pól.
źródło
Wewnętrzne połączyć dwie tabele w linq C #
źródło
od d1 w DealerContrac dołącz do d2 w DealerContrac na d1.dealearid równa się d2.dealerid wybierz nowy {umowa handlowa. *}
źródło
Jeden najlepszy przykład
Nazwy tabel:
TBL_Emp
iTBL_Dep
źródło