5

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

对很多属性进行排序,但这是我无法解决的问题,它可能很简单。

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

This is NOT supported ... 

所以我可以做类似的事情:

 var newList = list.Where(x => x.Identifier == "10" || x.Identifier == "20" || x.Identifier == "30");

但是由于列表是可变的……我该如何构造上面的内容?还是有更好的选择?

list类型IQueryable<MyCustomClass>

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

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

4

2 回答 2

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

但是 1.5 版本的包还没有在 nuget 上。

但是,这应该与 mongo-csharp-driver 带来的特别惊喜的“In”扩展一起使用。

 search.Where(x => x.In(list));
于 2012-06-07T09:02:36.057 回答
0
var identifierList = new []{"10", "20", "30"};
var newList = list.ToList().Where(x => identifierList.Contains(x.Identifier));

您只需要使用 List 而不是 Ienumerable(通过使用 .ToList() 来实现)

如果它不起作用,请添加您的列表类型

于 2012-06-06T22:24:39.953 回答