Expression<Func<bool>>
Linq sering menggunakan ungkapan, ungkapannya adalah perwakilan ekspresi lambda. Apabila memproses ungkapan, dua ungkapan logik sering diperlukan, seperti dan, atau, atau tidak.
kita mungkin mahu menggabungkan ungkapan ini untuk mendapatkan jenis ungkapan baru yang sama:
<code class="language-csharp">Expression<Func<bool>> expr1; Expression<Func<bool>> expr2;</code>
Ekspresi gabungan dengan parameter yang sama
<code class="language-csharp">// 示例用法(原样无效) Expression<Func<bool>> andExpression = expr1 AND expr2;</code>
jika dan menggunakan parameter yang sama, operasi sangat mudah:
ungkapan parameter yang berbeza dengan kombinasi expr1
expr2
<code class="language-csharp">var body = Expression.AndAlso(expr1.Body, expr2.Body); var lambda = Expression.Lambda<Func<bool>>(body, expr1.Parameters[0]);</code>
kaedah umum
Serpihan kod berikut menyediakan kaedah yang sama untuk menentukan cara yang paling sesuai untuk menentukan ekspresi gabungan:
Invoke
<code class="language-csharp">static Expression<Func<bool>> AndAlso<T>( this Expression<Func<bool>> left, Expression<Func<bool>> right) { var param = Expression.Parameter(typeof(T), "x"); var body = Expression.AndAlso( Expression.Invoke(left, param), Expression.Invoke(right, param) ); var lambda = Expression.Lambda<Func<bool>>(body, param); return lambda; }</code>
dalam .net 4.0 dan versi yang lebih tinggi, anda boleh menggunakan kelas untuk membuat ungkapan keselamatan EF:
Output Revied ini mengekalkan imej asal dan memberikan penjelasan yang lebih ringkas dan mudah dibaca mengenai coretan kod
Atas ialah kandungan terperinci Bagaimana menggabungkan ekspresi logik jenis `ekspresi` di Linq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!