Expression And Filter
public async Task GetUserByName(string name)
{
BinaryExpression filter = null;
var data = new Dictionary();
data.Add("name", name);
data.Add("technology", ".Net");
var userData = Expression.Parameter(typeof(UserData));
foreach (var toProcess in data)
{
var memberExpression = Expression.PropertyOrField(userData, toProcess.Key);
var constantExpression = Expression.Constant(toProcess.Value);
var binaryExpression = Expression.Equal(memberExpression, constantExpression);
filter = (filter != null) ? Expression.And(filter, binaryExpression) : binaryExpression;
}
Expression> lambda = Expression.Lambda>(filter, userData);
return await _dbContext.UserData.Where(lambda).FirstOrDefaultAsync();
}
Copy
|