首页 > 解决方案 > 解构表达式> 并收集到 .Intersect()

问题描述

我有一个 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())

标签: c#linq

解决方案


推荐阅读