亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#條件拼接Expression<Func<T, bool>>的使用

 更新時間:2022年02月21日 10:15:15   作者:風,停下  
本文主要介紹了C#條件拼接Expression<Func<T, bool>>的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

使用代碼

特別注意 :拼接條件時,所使用到的條件strID,strBir必須是獨立的

var predicate = PredicateBuilder.GetTrue<Student>();
predicate = predicate.And(it => it.id.ToString().Contains(strID));
predicate = predicate.And(it => it.Birthday.ToString().Contains(strBir));
predicate = predicate.And(it => it.Sex.ToString().Contains(strSex));
predicate = predicate.And(it => it.Age == 20);
var lst = db.Queryable<Student>.Where(predicate).ToList();

工具類

using System;
using System.Linq.Expressions;

namespace WindowsFormsApp1.Tools
{
? ? public static class PredicateBuilder
? ? {
? ? ? ? public static Expression<Func<T, bool>> GetTrue<T>() { return f => true; }
? ? ? ? public static Expression<Func<T, bool>> GetFalse<T>() { return f => false; }

? ? ? ? public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
? ? ? ? {
? ? ? ? ? ? return first.AndAlso<T>(second, Expression.AndAlso);
? ? ? ? }

? ? ? ? public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
? ? ? ? {
? ? ? ? ? ? return first.AndAlso<T>(second, Expression.OrElse);
? ? ? ? }

? ? ? ? private static Expression<Func<T, bool>> AndAlso<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2, Func<Expression, Expression, BinaryExpression> func)
? ? ? ? {
? ? ? ? ? ? var parameter = Expression.Parameter(typeof(T));

? ? ? ? ? ? var leftVisitor = new ReplaceExpressionVisitor(expr1.Parameters[0], parameter);
? ? ? ? ? ? var left = leftVisitor.Visit(expr1.Body);

? ? ? ? ? ? var rightVisitor = new ReplaceExpressionVisitor(expr2.Parameters[0], parameter);
? ? ? ? ? ? var right = rightVisitor.Visit(expr2.Body);

? ? ? ? ? ? return Expression.Lambda<Func<T, bool>>(
? ? ? ? ? ? ? ? func(left, right), parameter);
? ? ? ? }

? ? ? ? private class ReplaceExpressionVisitor : ExpressionVisitor
? ? ? ? {
? ? ? ? ? ? private readonly Expression _oldValue;
? ? ? ? ? ? private readonly Expression _newValue;

? ? ? ? ? ? public ReplaceExpressionVisitor(Expression oldValue, Expression newValue)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _oldValue = oldValue;
? ? ? ? ? ? ? ? _newValue = newValue;
? ? ? ? ? ? }

? ? ? ? ? ? public override Expression Visit(Expression node)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (node == _oldValue)
? ? ? ? ? ? ? ? ? ? return _newValue;
? ? ? ? ? ? ? ? return base.Visit(node);
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

到此這篇關(guān)于C#條件拼接Expression<Func<T, bool>>的使用的文章就介紹到這了,更多相關(guān)C#條件拼接Expression<Func<T, bool>>內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c#配置文件中自定義塊節(jié)點的方法

    c#配置文件中自定義塊節(jié)點的方法

    在.netcore中我們非常方便獲取配置文件節(jié)點參數(shù),但是在非.netcore下一般 我們是使用中方法,本文我們將給大家詳細介紹c#配置文件中自定義塊節(jié)點的方法,文中有詳細的代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • 解決WPF繪制矢量圖形模糊的問題

    解決WPF繪制矢量圖形模糊的問題

    這篇文章介紹了WPF繪制矢量圖形模糊問題的解決方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 利用unity代碼C#封裝為dll的步驟分享

    利用unity代碼C#封裝為dll的步驟分享

    這篇文章主要給大家介紹了關(guān)于利用unity代碼C#封裝為dll的相關(guān)資料,文中通過圖文將實現(xiàn)的方法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-05-05
  • C#實現(xiàn)簡單計算器功能

    C#實現(xiàn)簡單計算器功能

    給大家分享用C#寫出一個計算機功能的全部代碼分享,有興趣的朋友可以跟著做一下。
    2018-03-03
  • 詳細介紹C#之文件校驗工具的開發(fā)及問題

    詳細介紹C#之文件校驗工具的開發(fā)及問題

    目前校驗文件使用最多的是MD值和SHA值,不外乎有些使用CRC,前段時間微軟發(fā)布了VisualStudio正式版,win鏡像,微軟官方給出的校驗方式都是校驗文件的SHA值。下面詳細介紹C#之文件校驗工具的開發(fā)及問題,需要的朋友可以參考下
    2015-07-07
  • C# 獲取某個時間的0點0分和23點59分59秒

    C# 獲取某個時間的0點0分和23點59分59秒

    這篇文章主要介紹了C# 獲取某個時間的0點0分和23點59分59秒,文中給大家提到了java 獲取某一日期的0點0分0秒和23點59分59秒,需要的朋友可以參考下
    2019-09-09
  • C#多線程編程中的鎖系統(tǒng)(三)

    C#多線程編程中的鎖系統(tǒng)(三)

    這篇文章主要介紹了C#多線程編程中的鎖系統(tǒng)(三),本本文主要說下基于內(nèi)核模式構(gòu)造的線程同步方式、事件、信號量以及WaitHandle、AutoResetEvent、ManualResetEvent等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • C#實現(xiàn)簡易多人聊天室

    C#實現(xiàn)簡易多人聊天室

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡易多人聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#自定義集合初始化器

    C#自定義集合初始化器

    這篇文章介紹了C#自定義集合初始化器的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C#實現(xiàn)延時并自動關(guān)閉MessageBox的方法

    C#實現(xiàn)延時并自動關(guān)閉MessageBox的方法

    這篇文章主要介紹了C#實現(xiàn)延時并自動關(guān)閉MessageBox的方法,非常實用的功能,需要的朋友可以參考下
    2014-08-08

最新評論