Mam kolekcje MongoDB o nazwie File, ktore zawiera atrybut UploadedAt. Chcę wyciągnąć z tej kolekcji dane z pewnego przedziału czasowego. Robię to tak mniej więcej tak:
files
.Find(f => f.UploadedAt > DateTime.Now.AddDays(-1) && f.UploadedAt <= DateTime.Now)
.ToList();
Teraz chciałbym mieć możliwość napisania metody użytkowej, która pozwoli mi na pobranie danych według kryteriów opartych o dowolne atrybut (a nie tylko o UploadedAt). Próbowałem tak:
public List<Domain.File.File> SomeMethod(
IMongoCollection<Domain.File.File> collection,
Func<Domain.File.File, DateTime> field)
{
return collection
.Find(f => field(f) > DateTime.Now.AddDays(-1) && f.UploadedAt <= DateTime.Now)
.ToList();
}
Kompiluje się, ale podczas wywołania metody w następujący sposób:
SomeMethod(_collections.Files, f => f.UploadedAt);
Dostaję wyjątek:
MongoDB.Driver.Linq.ExpressionNotSupportedException: Expression not supported
Czy istnieje jakiś sposób na to żeby osiągnąć zamierzony cel?