C#Mongo错误:
Unsupported filter: ({document}{FILEDATE} > {document}{SPLITDATE}).
SQL查询:
SELECT * FROM CURRENT AS C WHERE C.FILEDATE > C.SPLITDATE
C#代码:
db.GetCollection<CollectionName>().AsQueryable()
.Where(a => a.fileDate > a.splitDate)
.Select(b => b.Name).Distinct().ToList()
答案 0 :(得分:1)
我不确定是否有更好的方法来实现它,但我通常使用Find语法,因为它似乎比AsQueryable()更通用 - 但可能只是我。试试这个:
var collection = db.GetCollection<CollectionObject>(CollectionName);
collection.Find(
(FilterDefinition<CollectionObject>)"{ $where : \"this.fileDate > this.splitDate\" }"
)
.Project<CollectionObject>(Builders<CollectionObject>.Projection.Include(c => c.Name))
.ToEnumerable()
.Select(c => c.Name)
.Distinct()
.ToList()
这样的事情应该有效,尽管我已经相信美元可能效率不高。 请注意,其中的名称是文档上的名称。