using Microsoft.EntityFrameworkCore; using System; using System.Linq; using System.Linq.Expressions; namespace LifePayment.Domain.Shared; public static class IQueryableExtensions { /// <summary> /// 当æ¡ä»¶ä¸ºtrue时为IQueryableé™„åŠ where,注:如果æ¡ä»¶ä¸ºtrue会更新source /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <param name="condition"></param> /// <param name="wherePredicate"></param> /// <returns></returns> public static IQueryable<T> WhereIfWithUpdateSource<T>(this IQueryable<T> source, bool condition, Expression<Func<T, bool>> wherePredicate) { if (condition) source = source.Where(wherePredicate); return source; } /// <summary> /// 当æ¡ä»¶ä¸ºtrue时为IQueryableé™„åŠ include,注:如果æ¡ä»¶ä¸ºtrue会更新source /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TP"></typeparam> /// <param name="source"></param> /// <param name="condition"></param> /// <param name="navigationPropertyPath"></param> /// <returns></returns> public static IQueryable<T> IncludeIf<T, TP>(this IQueryable<T> source, bool condition, Expression<Func<T, TP>> navigationPropertyPath) where T : class { if (condition) source = source.Include(navigationPropertyPath); return source; } }