これは簡単なことだと思いますが、それを成し遂げることはできません。どんな助けでも大歓迎です。私はLINQとMongoDBに比較的慣れていません。
私は次の2つのエンティティを持っています:
class ParentObject
{
GUID ParentId {get;set;}
IList<ChildObject> ChildObjects {get;set;}
...other properties
ParentObject()
{
childObjects = new List<ChildObject>();
}
}
class ChildObject
{
GUID ChildId {get;set;}
...other properties
}
私はMongoDBインスタンスに固執しています(サブドキュメントが埋め込まれた1つのドキュメントとして)。私がする必要があるのは、ParentIdとChildIdを使用して、ParentObjectドキュメント内に格納されているChildObjectサブドキュメントの1つだけを取得することです。次のメソッド/メソッド呼び出しがありますが、これはほぼ必要なことを実行しますが、インデックス(o、1など)に基づいてIListまたは1つの特定のChildObjectのみを返すことができます。
// I know this won't work
var parentId = (Some GUID);
var childId = (Some GUID);
var result =
SingleWithSelect<ParentObject, ChildObject>
(
x => x.Id == parentId && x.ChildObjects.ChildId == ChildId,
y => y.ChildObject
);
public TResult SingleWithSelect<T, TResult>(
System.Linq.Expressions.Expression<Func<T, bool>> whereExpression,
System.Linq.Expressions.Expression<Func<T, TResult>> selectExpression)
where T : class, new()
{
TResult retval = default(TResult);
using (var db = Mongo.Create(ConnectionString()))
{
retval = db.GetCollection<T>().AsQueryable()
.Where(whereExpression)
.Select(selectExpression)
.SingleOrDefault();
}
return retval;
}
ヘルプ/ポインタを事前に感謝します。
-マイク