假设类似于嵌套表达式
其中a = 1 AND(b = 4 OR b = 5)
如何使用多个Builders对象并从这样的表达式构建一个完整的过滤器?
rno*_*nko 61
Builders是非常灵活的类,它还覆盖了运算符" & = AND"和" | = OR"
你的榜样将是
var filter = Builders<User>.Filter.Eq(x => x.A, "1");
filter = filter & (Builders<User>.Filter.Eq(x => x.B, "4") | Builders<User>.Filter.Eq(x => x.B, "5"));
Run Code Online (Sandbox Code Playgroud)
小智 23
如果您想有条件地添加更多过滤器,请使用此方法:
var builder = Builders<Student>.Filter;
var filter = builder.Empty;
if (!string.IsNullOrWhiteSpace(firstName))
{
var firstNameFilter = builder.Eq(x => x.FirstName, firstName);
filter &= firstNameFilter;
}
if (!string.IsNullOrWhiteSpace(lastName))
{
var lastNameFilter = builder.Eq(x => x.LastName, lastName);
filter &= lastNameFilter;
}
if (minAge != null && maxAge != null)
{
var ageFilter = builder.And(builder.Gt(x => x.Age, minAge),
builder.Lt(x => x.Age, maxAge));
filter &= ageFilter;
}
var result = await _plpResultCollection.Find(filter).ToListAsync();
Run Code Online (Sandbox Code Playgroud)
您可以像这样非常简单地使用.....
var filter = Builders<Rental>.Filter.Where(s => s._id== id && s.Price==1500);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25345 次 |
| 最近记录: |