0
我是新來構建一個通用的查詢方法,這可能是很微不足道,但我有以下的方法,工作正常,使用LINQ MongoDB的:需要使用LINQ表達式
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的情況下,很難在線找到解決方案。
謝謝。
這是偉大的,感謝蒂姆!當使用以下方法調用該方法時,我收到一條錯誤消息,我試圖隱式地將匿名類型轉換爲「SomeEntity」,你知道我該如何補救嗎?方法調用:var result = SingleWithSelect(x => x.Id == id,y => new {y.SomeEntity}); –
Mikalee
2011-01-13 18:39:32