Skip to content

Commit b818efa

Browse files
committed
Added typed query builders and reimagined untyped query builder.
1 parent 767f213 commit b818efa

File tree

8 files changed

+3298
-102
lines changed

8 files changed

+3298
-102
lines changed

Driver/Builders/QueryBuilder.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using MongoDB.Bson;
2222
using MongoDB.Bson.IO;
2323
using MongoDB.Bson.Serialization;
24+
using System.Linq.Expressions;
2425

2526
namespace MongoDB.Driver.Builders
2627
{
@@ -38,6 +39,30 @@ public static IMongoQuery Null
3839
get { return null; }
3940
}
4041

42+
/// <summary>
43+
/// Builds a query using a strongly-typed query builder.
44+
/// </summary>
45+
/// <typeparam name="TDocument"></typeparam>
46+
/// <param name="queryBuilder">The query.</param>
47+
/// <returns>an IMongoQuery.</returns>
48+
public static IMongoQuery Build<TDocument>(Func<QueryBuilder<TDocument>, IMongoQuery> queryBuilder)
49+
{
50+
var builder = new QueryBuilder<TDocument>();
51+
return queryBuilder(builder);
52+
}
53+
54+
/// <summary>
55+
/// Builds a query from an expression.
56+
/// </summary>
57+
/// <typeparam name="TDocument">The entity type.</typeparam>
58+
/// <param name="expression">The query.</param>
59+
/// <returns>An IMongoQuery.</returns>
60+
public static IMongoQuery Where<TDocument>(Expression<Func<TDocument, bool>> expression)
61+
{
62+
var builder = new QueryBuilder<TDocument>();
63+
return builder.Where(expression);
64+
}
65+
4166
// public static methods
4267
/// <summary>
4368
/// Tests that the named array element contains all of the values (see $all).

0 commit comments

Comments
 (0)