Saya punya pertanyaan seperti ini
(from u in DataContext.Users
where u.Division == strUserDiv
&& u.Age > 18
&& u.Height > strHeightinFeet
select new DTO_UserMaster
{
Prop1 = u.Name,
}).ToList();
Saya ingin menambahkan berbagai kondisi seperti usia, tinggi badan berdasarkan apakah ketentuan tersebut disediakan untuk metode yang menjalankan kueri ini. Semua kondisi akan mencakup Divisi pengguna. Jika usia diberikan, saya ingin menambahkannya ke kueri. Demikian pula, jika ketinggian disediakan, saya ingin menambahkannya juga.
Jika ini harus dilakukan dengan menggunakan kueri sql, saya akan menggunakan pembuat string untuk menambahkannya ke kueri strSQL utama. Tetapi di sini di Linq saya hanya dapat memikirkan menggunakan kondisi IF di mana saya akan menulis kueri yang sama tiga kali, dengan setiap blok IF memiliki kondisi tambahan. Apakah ada cara yang lebih baik untuk melakukan ini?
sumber
LINQ to Entities does not recognize the method 'System.String get_Item(System.String)' method, and this method cannot be translated into a store expression.
Saya biasanya menggunakan metode berantai tetapi memiliki masalah yang sama. Dan inilah ekstensi yang saya gunakan
Ini membantu untuk menghindari putusnya rantai. Juga sama
ConditionalOrderBy
danConditionalOrderByDescending
sangat membantu.sumber
satu pilihan.
atau Anda dapat beralih ke sintaks metode untuk linq dan menggunakan kondisi if untuk melampirkan ekspresi ke klausa where.
sumber
Cukup saya menggunakannya di klausa where saya sebagai
sumber
Berdasarkan kondisi tertentu tambahkan kondisi dimana ...
sumber
Ini kode saya untuk melakukan hal serupa. Ini adalah metode pada api Layanan Web WCF SOAP saya.
Kueri dasar
Select(f => f)
pada dasarnya berarti SEMUANYA, danWhere
klausa secara opsional dilampirkan padanya. FinalSelect
adalah opsional. Saya gunakan untuk mengubah objek baris database menjadi objek "Buah" hasil.sumber
Dengan asumsi parameter berikut,
Cukup menggunakan
&&
dan||
operator bersyarat kita dapat memiliki versi lain.Seperti Param1 Anda dapat menambahkan sejumlah parameter untuk kondisi pencarian.
sumber
Saya baru saja menemukan ini mencari sesuatu yang lain, tetapi saya pikir saya akan memasukkan versi lambda.
Pertama, saya akan membuat kelas seperti ini untuk meneruskan parameter ke lapisan data:
Kemudian, di lapisan data saya, sesuatu seperti ini:
Di mana Anda mewujudkan pertanyaan itu terserah Anda. Mungkin memiliki lapisan antara aplikasi dan data yang mengubah representasi khusus db menjadi db-agnostik (mungkin Anda meminta beberapa sumber data). Lapisan itu mungkin mendapatkan beberapa jenis queryable dari sumber ini dan memetakannya ke representasi POCO yang umum, misalnya.
sumber
Hanya untuk menambahkan jawaban yang diterima di atas di sini , jika Anda melakukan pencarian dinamis pada gabungan, pertimbangkan untuk mengembalikan objek baru dengan kedua tabel (t1, t2) dalam kueri linq awal sehingga Anda dapat mengaksesnya secara individual untuk melakukan kondisional Cari.
Saya mendapat jawaban yang saya cari di sini sehubungan dengan menggabungkan dua tabel dan menanyakan kolom tertentu di salah satu tabel
sumber