ContainsAny 没有 return 任何结果

ContainsAny doesn't return any result

我希望能够找到包含 arrayOfArraysOfIds 的 TheType,该数组具有我提供的列表中的任何元素。 问题是当我在下面进行查询时,它没有 return 任何东西。什么是正确的格式或我应该使用什么功能?

public class TheType
{
    public IList<IList<string>> arrayOfArraysOfIds;
}

theCollection.AsQueryable<theType>().
    Where(t => t.arrayOfArraysOfIds.ContainsAny(listOfIds));

listOfIds 是 ContainsAny 函数所要求的 IEnumerable<IList<string>> 类型,它是根据 here.

所述的列表构建的

问题是查询没有 return 任何东西,即使数据库中有一个应该 returned 的元素。

试试这个:

theCollection.AsQueryable().Where(t => t.arrayOfArraysOfIds.Contains(listOfIds));

...其中 listOfIds 被定义为通用列表

IList<字符串> listOfIds = 新列表<字符串>();

您可以获得更多控制权以及了解为什么您没有获取任何值的原因的一种方法是显式定义您自己的 ContainsAny 方法,以便您可以使用调试器。我发现这种做法虽然不像使用复杂的 LINQ 命令那样巧妙优雅,但却省去了很多麻烦。

    public class TheType
    {
        public IList<IList<string>> arrayOfArraysOfIds;
        public bool ContainsAny(IList<string> listOfIds)
        {
            return arrayOfArraysOfIds.Contains(listOfIds);
        }
    }

   theCollection.AsQueryable<TheType>().Where(t => t.ContainsAny(listOfIds));

解决方案是向 MongoDB 查询,而不是让 breeze 解释它,因为 MongoDB..

直接支持该查询
theCollection.Find(Query.ElemMatch("listOfIds", Query.In("$elemMatch", new BsonArray(listOfIds)))).AsQueryable();