Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDb c#驱动程序LINQ与本机查询_Linq_C# 4.0_Mongodb - Fatal编程技术网

MongoDb c#驱动程序LINQ与本机查询

MongoDb c#驱动程序LINQ与本机查询,linq,c#-4.0,mongodb,Linq,C# 4.0,Mongodb,这些查询中哪一个性能更好?一个使用linq,另一个使用本机查询机制 LINQ var query = collection.AsQueryable<Employee>() .Where(e => e.FirstName == "John") .Select(e => e); NATIVE var query= Query<Employee>.EQ(e => e.FirstName, "John"); var emp = collection.F

这些查询中哪一个性能更好?一个使用linq,另一个使用本机查询机制

LINQ

var query =
collection.AsQueryable<Employee>()
.Where(e => e.FirstName == "John")
.Select(e => e); 


NATIVE

var query= Query<Employee>.EQ(e => e.FirstName, "John");
var emp = collection.FindOne(query);
LINQ
变量查询=
collection.AsQueryable()
.其中(e=>e.FirstName==“John”)
.选择(e=>e);
土生土长的
var query=query.EQ(e=>e.FirstName,“John”);
var emp=collection.FindOne(查询);

我假设MangGDB中的本地查询机制会更好,因为据我所知,它过滤了数据库中的结果,其中LINQ首先获取集合中的所有项,然后对结果进行过滤。什么时候我应该考虑LINQ在原生查询机制上使用?< /P> 因为,据我所知,它在 数据库,其中as linq首先获取集合中的所有项,然后 然后过滤结果

不,不,不。它在数据库级别过滤所有内容

第二种方法不是构建mongodb查询的本机方法。它仍然是同一个包装器,只需构建真正的本地mongod查询(例如
{“a”:1,“b”:2}

第一个查询使用表达式树构建mongo查询。第二种方法使用反射来构建相同的查询。我知道表达式树应该更快(我找到的第一篇文章)。无论如何,我不认为性能差异是必要的。所以,只要用你更喜欢的


至于我,我使用linq进行大多数查询,一些开发人员甚至可能对mongo知之甚少,但这里的黑面是,您实际上可能没有意识到它可以为您构建什么查询。(例如linq到sql的情况也是如此)。但您仍然能够记录所有本机查询,查看它们,并找到优化、更改的位置。对于复杂的查询,我通常使用第二种方法。

另一种变体是
var query=query.Where(e=>e.FirstName==“John”)
。然后使用
query.ToJson()