最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

使用代碼

特別注意 :拼接條件時,所使用到的條件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)文章

  • datatable生成excel和excel插入圖片示例詳解

    datatable生成excel和excel插入圖片示例詳解

    excel導(dǎo)出在C#代碼中應(yīng)用己經(jīng)很廣泛了,下面講了datatable生成excel、復(fù)制sheet頁、刪除sheet頁、選中sheet頁、另存excel文件、excel中插入圖片等功能
    2014-01-01
  • 淺談Unity腳本生命周期與執(zhí)行順序

    淺談Unity腳本生命周期與執(zhí)行順序

    在Unity中,腳本可以理解為附加在游戲?qū)ο笊系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。必須綁定在游戲?qū)ο笊喜拍荛_始它的生命周期。游戲?qū)ο罂梢岳斫鉃槟苋菁{各種組件的容器,游戲?qū)ο蟮乃薪M件一起決定了這個對象的行為和游戲中的表現(xiàn)
    2021-06-06
  • C#檢查Windows是否安裝了某個服務(wù)的方法

    C#檢查Windows是否安裝了某個服務(wù)的方法

    這篇文章主要介紹了C#檢查Windows是否安裝了某個服務(wù)的方法,涉及C#操作windows系統(tǒng)服務(wù)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • c# 基于GMap.NET實現(xiàn)電子圍欄功能(WPF版)

    c# 基于GMap.NET實現(xiàn)電子圍欄功能(WPF版)

    這篇文章主要介紹了c# 基于GMap.NET實現(xiàn)電子圍欄功能(WPF版),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#事件訂閱發(fā)布實現(xiàn)原理詳解

    C#事件訂閱發(fā)布實現(xiàn)原理詳解

    這篇文章主要介紹了C#事件訂閱發(fā)布實現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • 詳解使用C#編寫SqlHelper類

    詳解使用C#編寫SqlHelper類

    本篇文章主要介紹了使用C#編寫SqlHelper類,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 對C# 多態(tài)的理解

    對C# 多態(tài)的理解

    這篇文章主要介紹了對C# 多態(tài)的理解,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • C#簡單連接sql數(shù)據(jù)庫的方法

    C#簡單連接sql數(shù)據(jù)庫的方法

    這篇文章主要介紹了C#簡單連接sql數(shù)據(jù)庫的方法,涉及C#基于控制臺的數(shù)據(jù)庫連接創(chuàng)建于命令執(zhí)行相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • c# 剔除sql語句''尾巴''的五種方法

    c# 剔除sql語句''尾巴''的五種方法

    這篇文章主要介紹了c# 剔除sql語句'尾巴'的五種方法,
    2020-11-11
  • C# linq查詢之動態(tài)OrderBy用法實例

    C# linq查詢之動態(tài)OrderBy用法實例

    這篇文章主要介紹了C# linq查詢之動態(tài)OrderBy用法,實例分析了C#采用linq方式查詢時動態(tài)排序的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評論

陆丰市| 白水县| 新乡县| 和顺县| 揭西县| 永德县| 上饶县| 巩义市| 松溪县| 葵青区| 宝丰县| 长泰县| 龙川县| 望奎县| 项城市| 新平| 蒙阴县| 郸城县| 胶州市| 页游| 千阳县| 柏乡县| 镇原县| 黔西县| 南岸区| 郁南县| 静乐县| 深州市| 星子县| 象州县| 兴安县| 富顺县| 武定县| 镇坪县| 高唐县| 宜州市| 岗巴县| 甘德县| 乌兰浩特市| 城口县| 海城市|