using System;
using System.Linq;
using System.Linq.Expressions;
namespace FuLu.Finance.Assistant.Common.Linq
{
public static class LinqExtension
{
/// <summary>
/// 扩展Between 操作符
/// 使用 var query = db.People.Between(person => person.Age, 18, 21);
/// </summary>
/// <typeparam name="TSource"></typeparam>
/// <typeparam name="TKey"></typeparam>
/// <param name="source"></param>
/// <param name="keySelector"></param>
/// <param name="low"></param>
/// <param name="high"></param>
/// <returns></returns>
public static IQueryable<TSource> Between<TSource, TKey>
(this IQueryable<TSource> source,
Expression<Func<TSource, TKey>> keySelector,
TKey low, TKey high) where TKey : IComparable<TKey>
{
Expression key = Expression.Invoke(keySelector,
keySelector.Parameters.ToArray());
Expression lowerBound = Expression.GreaterThanOrEqual
(key, Expression.Constant(low));
Expression upperBound = Expression.LessThanOrEqual
(key, Expression.Constant(high));
Expression and = Expression.AndAlso(lowerBound, upperBound);
Expression<Func<TSource, bool>> lambda =
Expression.Lambda<Func<TSource, bool>>(and, keySelector.Parameters);
return source.Where(lambda);
}
}
}
EF中扩展出Between操作符
最新推荐文章于 2025-08-30 11:16:16 发布
本文介绍如何在C#中通过扩展LINQ Between操作符,实现更高效的元素筛选,具体步骤包括定义泛型方法,利用表达式树进行条件判断,并返回满足条件的查询结果。
46

被折叠的 条评论
为什么被折叠?



