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;
|
}
|
}
|