Mongodb,linq司机.如何使用变量或语句构造Contains

Sys*_*ska 5 .net c# linq mongodb mongodb-.net-driver

我正在使用Mongo LINQ驱动程序用于C#,效果很好.

排序很多属性,但这是一个我无法解决的问题,它可能很简单.

var identifierList = new []{"10", "20", "30"};
var newList = list.Where(x => identifierList.Contains(x.Identifier));

This is NOT supported ... 
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

 var newList = list.Where(x => x.Identifier == "10" || x.Identifier == "20" || x.Identifier == "30");
Run Code Online (Sandbox Code Playgroud)

但由于列表是可变的......我该如何构建上述内容?还是有更好的选择吗?

list类型是IQueryable<MyCustomClass>

有关信息......这用作许多属性的过滤器.在SQL中我可以有一个父 - >子关系.但由于我不能作为主ID的父亲,我需要把所有的ID都拿出去,然后像这样构建它.

希望这是有道理的.如果需要,我会解释更多.

Sys*_*ska 5

回答我自己的问题...... Mongo Sharp LINQ驱动程序有一个名为"In"的扩展方法,它完全符合我的需要.

然而,他们已经在1.5中实现了它,所以我们可以使用旧的方式:https://jira.mongodb.org/browse/CSHARP-462

 var list = new []{"10", "10"};

 search.Where(x => list.Contains(x.Id));
Run Code Online (Sandbox Code Playgroud)

但是版本1.5的软件包尚未在nuget上.

但是,这应该与"In"扩展一起使用,这对mongo-csharp驱动程序来说是一个特别的惊喜.

 search.Where(x => x.In(list));
Run Code Online (Sandbox Code Playgroud)