Я новичок, и это, вероятно, очень тривиально, но у меня есть следующий метод, который отлично работает, используя LINQ для MongoDB:
public T Single<T>(System.Linq.Expressions.Expression<Func<T, bool>> whereExpression) where T : class, new()
{
T retval = default(T);
using (var db = Mongo.Create(_connectionString))
{
retval = db.GetCollection<T>().AsQueryable()
.Where(whereExpression).SingleOrDefault();
}
return retval;
}
Но я хотел бы добавить к нему «Выбрать» (для проекции) с использованием параметра, что-то, что может выглядеть так (что, очевидно, не работает):
public T SingleWithSelect<T>(System.Linq.Expressions.Expression<Func<T, bool>> whereExpression, System.Linq.Expressions.Expression<Func<T, bool>> selectExpression) where T : class, new()
{
T retval = default(T);
using (var db = Mongo.Create(_connectionString))
{
retval = db.GetCollection<T>().AsQueryable()
.Where(whereExpression)
.Select(selectExpression)
.SingleOrDefault();
}
return retval;
}
В надежде, что он вернет что-то похожее на следующее:
var results = db.GetCollection<Entity>("Entities").AsQueryable()
.Where(i => i.Id == someId)
.Select(y => new { y.SomeEntity }).SingleOrDefault();
По сути, мне просто нужно знать, как передать параметр SELECT в функцию возврата - удивительно трудно найти решение в Интернете, когда он незнаком с LINQ.
Спасибо.