Ini adalah Sintaks Linq saya yang saya gunakan untuk model entitas saya
IQueryable<string> objEmployee = null;
objEmployee = from res in _db.EMPLOYEEs
where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
select res.EMAIL;
Bagaimana cara memilih beberapa kolom? Seperti saya ingin memilih res.ID juga. Dan bagaimana saya bisa menerima itu? IQueryable tidak akan berhasil, saya pikir. Dan ini disebut Linq ke SQL - bukan?
c#
linq
entity-framework
Riz
sumber
sumber
Jawaban:
Seperti yang ditunjukkan oleh jawaban lain, Anda perlu menggunakan tipe anonim.
Sejauh menyangkut sintaks, saya pribadi jauh lebih menyukai perangkaian metode. Metode yang setara dengan rangkaian adalah: -
AFAIK, sintaks LINQ deklaratif diubah menjadi rantai panggilan metode yang mirip dengan ini ketika dikompilasi.
MEMPERBARUI
Jika Anda menginginkan keseluruhan objek, maka Anda hanya perlu menghilangkan panggilan ke
Select()
, yaitusumber
Anda dapat menggunakan tipe anonim misalnya:
sumber
select new { Diff = (DateTime.Now - debt.ClaimDate), Amount = debt.Amount}
. Formulir yang digunakan dalam jawaban adalah singkatan, di mana nama anggota dalam ekspresi inisialisasi digunakan sebagai nama bidang berjenis anonim. Misalnyanew {res.EMAIL, res.USER_NAME}
adalah singkatan darinew {EMAIL = res.EMAIL, USER_NAME = res.USER_NAME}
. Jika ada ekspresi, seperti dalam kasus Anda dengan tanggal - singkatan tidak berlaku, maka kesalahan kompiler.ATAU Anda bisa menggunakan
Penjelasan:
Pilih karyawan dari db sebagai res.
Saring detail karyawan sesuai kondisi di mana.
Pilih bidang wajib dari objek karyawan dengan membuat objek Anonim menggunakan baru {}
sumber