Saya menulis pernyataan LINQ ke SQL, dan saya mencari sintaks standar untuk gabungan normal dengan ON
klausa dalam C #.
Bagaimana Anda mewakili yang berikut ini dalam LINQ ke SQL:
select DealerContact.*
from Dealer
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Jawaban:
Bunyinya seperti:
Akan menyenangkan untuk memiliki nama dan bidang yang masuk akal untuk tabel Anda untuk contoh yang lebih baik. :)
Memperbarui
Saya pikir untuk permintaan Anda ini mungkin lebih tepat:
Karena Anda mencari kontak, bukan dealer.
sumber
from c or from t1
Dan karena saya lebih suka sintaksis rantai ekspresi, berikut adalah bagaimana Anda melakukannya dengan itu:
sumber
Untuk memperluas jawaban sintaksis rantai ekspresi oleh Clever Human:
Jika Anda ingin melakukan hal-hal (seperti memfilter atau memilih) pada bidang dari kedua tabel yang disatukan - alih-alih hanya pada salah satu dari dua tabel tersebut - Anda bisa membuat objek baru dalam ekspresi lambda dari parameter terakhir ke metode Bergabung dengan metode menggabungkan kedua tabel tersebut, misalnya:
Bagian yang menarik adalah ekspresi lambda di baris 4 dari contoh itu:
... tempat kami membuat objek tipe anonim baru yang memiliki properti yang dicatat DealerContact dan Dealer, beserta semua bidangnya.
Kami kemudian dapat menggunakan bidang dari catatan tersebut saat kami memfilter dan memilih hasil, seperti yang ditunjukkan oleh sisa contoh, yang menggunakan
dc_d
sebagai nama untuk objek anonim yang kami buat yang memiliki catatan DealerContact dan Dealer sebagai propertinya.sumber
sumber
ContactStatus
benar-benar enum, danc.StatusID
bukan benar-benar ID, tetapi nilai numerik dari enum. Jika saya benar,(ContactStatus)c.StatusID
benar-benar hanya melemparkan integer ke enum.Gunakan operator Linq Join :
sumber
Anda membuat kunci asing, dan LINQ-to-SQL membuat properti navigasi untuk Anda. Masing
Dealer
- masing kemudian akan memiliki koleksiDealerContacts
yang dapat Anda pilih, filter, dan manipulasi.atau
Jika Anda tidak menggunakan properti navigasi, Anda kehilangan salah satu manfaat utama pada LINQ-to-SQL - bagian yang memetakan grafik objek.
sumber
pada dasarnya LINQ bergabung dengan operator tidak memberikan manfaat untuk SQL. Yaitu permintaan berikut
akan menghasilkan INNER GABUNG dalam SQL
bergabung berguna untuk IEnumerable <> karena lebih efisien:
klausa akan dieksekusi kembali untuk setiap dealer Tapi untuk IQueryable <> bukan itu masalahnya. Juga bergabung kurang fleksibel.
sumber
Sebenarnya, seringkali lebih baik tidak bergabung, dalam LINQ itu. Ketika ada properti navigasi cara yang sangat ringkas untuk menulis pernyataan LINQ Anda adalah:
Ini diterjemahkan menjadi klausa di mana:
sumber
SelectMany()
.Gunakan LINQ bergabung untuk melakukan Inner Join.
sumber
Coba ini :
sumber
sumber
Di mana tabel siswa dan kursus memiliki kunci utama dan hubungan kunci asing
sumber
coba ini,
sumber
sumber
sumber
Tulis nama tabel yang Anda inginkan, dan inisialisasi pilih untuk mendapatkan hasil bidang.
sumber
Inner gabung dua tabel di linq C #
sumber
dari d1 di DealerContrac, gabung d2 di DealerContrac pada d1.dealearid sama dengan d2.dealerid pilih new {dealercontract. *}
sumber
Satu contoh terbaik
Nama Tabel:
TBL_Emp
danTBL_Dep
sumber