解构Expression <func <... >>并将其收集为.Intersect()

时间:2018-08-30 13:08:24

标签: c# linq

我对MongoDB查询进行了抽象,因此我将表达式树传递给它,以过滤从数据库检索的文档。例如:

var filterExpression = x => x.IsPublished && x.Topics.Contains("fish");
MyCollection.Get(filterExpression);

在执行此操作后,我要做:

_collection.Find(filterExpression).ToListAsync();

我对此也有假冒品,用于测试:

Collection.Where(expression.Compile());

现在,我需要执行“相交”查询,例如,获取所有已发布的文档,并包含有关“鱼”或“芯片”的主题。

在mongo中,我必须使用:

Builders<TDAO>.Filter.AnyIn(setInDocument, setToIntersect)

其中的参数具有类型:

Expression<Func<TDAO, IEnumerable<string>>> setInDocument
IEnumerable<string> setToIntersect

是否有一种方法可以将这些类型转换为相交,例如:

.Where(setInDocument.Intersect(setToIntersect).Any())

0 个答案:

没有答案