Skip to content
pagebrooks edited this page Dec 6, 2011 · 22 revisions

The predicate system in Dapper Extensions is very simple to use. In the examples below we will use the following model:

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

Simple Eq Operation

Code

using (SqlConnection cn = new SqlConnection(_connectionString))
{
    cn.Open();
    var predicate = Predicates.Field<Person>(f => f.Active, Operator.Eq, true);
    IEnumerable<Person> list = cn.GetList<Person>(predicate);
    cn.Close();
}

Compound Predicate (Predicate Group)

Code

            using (SqlConnection cn = new SqlConnection(_connectionString))
            {
               cn.Open();
                var predicateGroup = new PredicateGroup();
                predicateGroup.Operator = GroupOperator.And;
                predicateGroup.Predicates = new List<IPredicate>();

                var activePredicate = Predicates.Field<Person>(f => f.Active, Operator.Eq, true);
                var lastNamePredicate = Predicates.Field<Person>(f => f.LastName, Operator.Like, "Br%");

                predicateGroup.Predicates.Add(activePredicate);
                predicateGroup.Predicates.Add(lastNamePredicate);
                IEnumerable<Person> list = cn.GetList<Person>(predicateGroup);
                cn.Close();
            }

Generated SQL

SELECT 
   [Person].[Id]
 , [Person].[FirstName]
 , [Person].[LastName]
 , [Person].[Active]
 , [Person].[DateCreated] 
FROM [Person]
WHERE ([Person].[Active] = @Activep0)

Generated SQL

SELECT 
   [Person].[Id]
 , [Person].[FirstName]
 , [Person].[LastName]
 , [Person].[Active]
 , [Person].[DateCreated] 
FROM [Person] 
WHERE (([Person].[Active] = @Activep0) 
      AND ([Person].[LastName] LIKE @LastNamep1))
Clone this wiki locally