Abdullah Balıkçı
Crafterdevs
Published in
2 min readMay 10, 2023

--

Daha Genel ve Esnek Filtreleme için LINQ Kullanımı Örneği -1

net

Merhaba! Bugün, filtreleme işlemlerini daha esnek bir şekilde yapmanızı sağlayan bir yöntem paylaşacağım.

1)İlk olarak, paketimizi indiriyoruz.

“System.Linq.Dynamic.Core” adlı bir üçüncü taraf kütüphane indirmemiz gerekiyor. Bu kütüphane, dize ifadelerini LINQ ifadelerine dönüştürmek ve çalıştırmak için gerekli araçları sağlar.

Ayrıca, dışarıdan alacağımız expression parametresi için bir tanımlama yapmamız gerekiyor. Örnek projenizdeki kullanım şekli aşağıdaki gibi olabilir:

CQRS Request

3) String olarak alınan şartı Expression türüne çevirmek için aşağıdaki gibi bir yöntem kullanabilirsiniz:

public static Expression<Func<T, bool>> ParseExpression<T>(string expression)
{
var parameter = Expression.Parameter(typeof(T));
var lambda = DynamicExpressionParser.ParseLambda(new[] { parameter }, typeof(bool), expression);
return (Expression<Func<T, bool>>)lambda;
}

4) Bu yapıyı kullanmak:

public async Task<List<Customer>> GetAllFilter(GetAllFilterCustomerQuery request)
{

var expression = ExpressionParser.ParseExpression<Customer>(request.Expression);
var query = _queryRepository.GetAll().Where(expression).Include(p => p.CustomerType).ToListAsync();
return result;

}

5) Örnek Kullanım

6)Response

Not : Performans gibi testler yapılmamıştır. Örnek teşkil etmesi için paylaşılmıştır. Ayrıca, performans testlerini gerçekleştirmeniz ve projenizin ihtiyaçlarına göre gerekli optimizasyonları yapmanız öneririm.

Tavsiyelerinize ve eleştirilerinize açığım. Teşekkürler.

--

--