c# lambda查询查找匹配的子元素

本文关键字:元素 lambda 查询 查找 | 更新日期: 2023-09-27 17:51:16

var query = Query<MongoData>.EQ(e => e.name, someString);
var entity = collection.FindOneAs<MongoData>(query);

返回collection中的MongoData对象,其中属性name与我发送的字符串(someString)匹配。

我想在此添加另一个查询,以获得匹配namefiles.author的实体

collectionList, filescollection里面的List

目前,我正在做它的困难的方式,只是循环通过entity.files,直到我找到一个匹配,但这是痛苦的。

因此,给定一个包含一个名称为X的对象和一个包含Y作者的files列表的MongoData列表,我想返回这个。

c# lambda查询查找匹配的子元素

你可以这样做,一次查询多个属性:

var query = Query.And(
    Query<MongoData>.EQ(e => e.name, someString),
    Query<MongoData>.ElemMatch(
        e => e.files,
        q => q.EQ(f => f.author, someAuthorName)
    )
);

后一个子查询使用ElemMatch<TValue>查询函数,该函数期望一个表达式返回子对象的可枚举值,以及一个对每个子对象执行另一个查询的函数。

相关文章: