在C#中从mongodb中获取单个对象我选择了一段使用MongoDB驱动程序从集合中获取单个对象的代码......它可能不对,可以吗?有没有更好的方法来获得这个?IMongoCollection用户集合;....userCollection.FindAsync(x=>x.Id==inputId).Result.ToListAsync().Result.Single();就在这儿。首先不要使用FindAsync,而是使用Find。在IFindFluent结果上使用SingleAsync扩展方法并等待异步方法中返回的任务:asyncTaskMainAsync(){IMongoCollectionuserCollection=...;varapplicationUser=awaituserCollection.Find(_=>_.Id==inputId).SingleAsync();新的驱动程序只使用异步等待。不要用Task.Result阻止它。在执行查询之前应该限制查询,否则你将首先找到所有结果,然后只读取其中一个。您可以在FindOptions中使用FindAsync指定一个限制,或者使用流畅的语法在执行前限制查询:varresults=awaituserCollection.Find(x=>x.Id==inputId).Limit(1).ToListAsync();ApplicationUsersingleResult=results.FirstOrDefault();ToListAsync的结果将是一个列表,但由于您将结果数限制为1,因此该列表将只有一个结果,您可以使用Linq访问该结果。我无法获得此方法:coll.Find(_=>_.Id==inputId).SingleAsync();工作,因为我收到错误InvalidOperationException:Sequencecontainsmorethanoneelementc#所以我最终使用.FirstOrDefault()示例:以上是C#学习教程:在C#中从mongodb获取单个对象共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——publicFooClassGetFirstFooDocument(stringtemplatename){varcoll=db.GetCollection("foo");FooClassfoo=coll.Find(_=>_.TemplateName==templatename).FirstOrDefault();返回富;}本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
