【发布时间】:2015-09-08 06:01:25
【问题描述】:
考虑以下存储为文档的对象结构:
public class Foo
{
public string Id { get; set; }
public ICollection<FooBar> Bars { get; set; }
// ...
}
public class FooBar
{
public string BarId { get; set; }
// ...
}
使用带有驱动程序的 LINQ 样式查询,我可以 Find 所有包含 Foo 的 FooBar BarId 像这样:
var foos = await m_fooCollection.Find( f => f.Bars.Any( fb => fb.BarId == "123") ).ToListAsync();
如何使用FilterDefinitionBuilder 而不是Find 上的内联LINQ 来实现相同的查询?
【问题讨论】:
-
它不是 LINQ,只是一个 lambda 表达式。
-
ICollection上的.Any是System.Linq命名空间中Enumerable类的一部分,对吧? -
确实如此,但永远不会调用该方法。驱动程序将表达式转换为 mongo 查询。
-
好的,有道理。我想我更想表达一个事实,即我使用的是 LINQ 样式语法而不是实际的 LINQ。
-
是的,这并不重要。只是给未来的谷歌员工的一个说明。
标签: c# mongodb mongodb-query mongodb-.net-driver mongodb-csharp-2.0