MongoDb C# ドライバーはプロジェクションをサポートしていないことを知っているので、少し検索したところ、多くの人が mongoCursor を使用してそのようなクエリを実行していることがわかりました。特定のフィールドのみを選択しようとしています。私のコードは次のとおりです。
public T GetSingle<T>(Expression<Func<T, bool>> criteria,params Expression<Func<T, object>>[] fields) where T : class
{
Collection = GetCollection<T>();
return Collection.FindAs<T>(Query<T>.Where(criteria)).SetFields(Fields<T>.Include(fields)).SetLimit(1).SingleOrDefault();
}
その上にユーザー用のカスタムリポジトリを取得しました:
public User GetByEmail(string mail, params Expression<Func<User, object>>[] fields)
{
return GetSingle<User>(x=>x.Email==mail,fields);
}
これは使用法です:
_repository.GetByEmail(email, x=>x.Id,x=>x.DisplayName,x=>x.ProfilePicture)
しかし、私はパラメータに含まれるフィールドを取得していますが、クラス User の一部であるすべての列挙型、日付、およびブール値も取得しています。文字列であり、フィールドリストに含まれていない値は null であるため、問題ありません
それを避けるために私は何ができますか?