有人可以帮我编写C#mongo Query,相当于SQL

时间:2017-05-25 10:15:37

标签: c# mongodb linq mongodb-query

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()

1 个答案:

答案 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()

这样的事情应该有效,尽管我已经相信美元可能效率不高。 请注意,其中的名称是文档上的名称。