Blog

Filter posts by the Tags of Blog section!

C# Expression to filter in LINQ Monday, 30 June 2014

Suppose that you want to create a LINQ query to filter the users of your database based on bool property. Let's say getting inactivated users. You can create expression for that:

 

  private Expression<Func<User, bool>> GetDeactivatedUserExpression(bool deactivated)

        {

            if (deactivated == false)

            {

                return p => p.Inactive == true;

            }

 

            return p => p.Inactive == false;

        }

 

 

Not that, we just want to filter the output based on a bool parameter. And finally about the usage:

 

 

  public PagedResult<UserListView> GetPagedUsers(int page, bool deactivated)

        {

            var deactivatedExpression = GetDeactivatedUserExpression(deactivated);

 

            return _baseDbContext.Users.Where(deactivatedExpression).Select(d => new UserListView

            {

                Id = d.Id,

                Mobile = d.Mobile,

                CountryCode = d.CountryCode,

                Username = d.Username,

                Inactive = d.Inactive,

                IsVerified = d.IsVerified

            }).ToPagedResult(page);

        }

 

Although in an advance way you can use Specification Pattern, the above one is another simple way. Cheers!

Tags: Linq C#

comments powered by Disqus