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
)匹配。
我想在此添加另一个查询,以获得匹配name
和files.author
的实体
collection
是List
, files
是collection
里面的List
。
目前,我正在做它的困难的方式,只是循环通过entity.files
,直到我找到一个匹配,但这是痛苦的。
因此,给定一个包含一个名称为X
的对象和一个包含Y
作者的files
列表的MongoData列表,我想返回这个。
你可以这样做,一次查询多个属性:
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>
查询函数,该函数期望一个表达式返回子对象的可枚举值,以及一个对每个子对象执行另一个查询的函数。