c# - FluentMongo LINQ : How to query a sublist of a class

标签 c# linq list mongodb sublist

假设我有一堂这样的课:

public class BOa
{

    public ObjectId Id { get; set; }

    public string Name { get; set; }

    public List<BOb> VisiteEffettuate = new List<BOb>();
}

public class BOvalues
{

    public DateTime Data { get; set; }
    public int Age { get; set; }
    public int Score { get; set;}

 }

在 MongoDB 中,需要明确的是,我有许多 BOa 的集合。它们中的每一个都包含许多(一系列......)BO值 我想知道如何使用 FluentMongo LINQ(或其他方法)获取 BO 值列表,例如,分数大于某个值或两个值之间的年龄。

我想使用 SelectMany,但 fluencemongo 似乎不支持它。

获得此结果的最佳方法是什么?

提前谢谢您!

编辑:我尝试在 LINQ 上使用 QueryBuilder 代替...例如:

        var query = MongoDB.Driver.Builders.Query.ElemMatch("VisiteEffettuate", MongoDB.Driver.Builders.Query.And( 
                MongoDB.Driver.Builders.Query.GT("Age", 32),
                MongoDB.Driver.Builders.Query.EQ("Name", "xxxx")
                )
                );

        var res = pazienti.Find(query);

...等等。似乎有效。但 QueryBuilder 没有如此记录,并且(我不确定)不可能以编程方式创建查询(例如,动态 LINQ)。

最佳答案

您可以使用 Any 运算符重写查询。

col.AsQueryable().Where(x => x.Any(y => y.Age < 40));

这现在可以在 FluentMongo 中使用。但是,由于官方驱动程序获得了 linq 支持,FluentMongo 不再是受支持的项目。

这目前在官方驱动程序中不起作用,但预计在 1.5 版本中起作用。我建议您暂时坚持使用查询构建器,直到 1.5 版本发布。

关于c# - FluentMongo LINQ : How to query a sublist of a class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584425/

相关文章:

c# - 我可以将 ValueTuple 传递给需要泛型类型的方法并仍然维护成员变量吗?

Python 枚举列表的良好编程实践

C# - ThreadPool QueueUserWorkItem 使用?

c# - 用另一个 linq 表达式包装一个 linq 表达式

c# - 构建一个 web 项目破坏了解决方案中第二个的编译版本

c# - Linq 中 OfType 的逆函数?

c# - Linq to Entities 和串联属性

database - 使用 LINQ to Entities 选择连续条目

java - 将 LinkedList 添加到包含 LinkedList 的 LinkedList 并更改添加的 LinkedList

python - 将列表显示为字符串