因此,我在NOSQL数据库上运行linq查询,如果一个带有该ID的对象仅返回一个对象,否则不返回任何对象,但是数据库中可能有两个具有相同ID的对象(如果其他人弄乱了向上。)目前,我已将其实施如下:

(from c in [IQueryableThing] where c.Id.Equals(id)).ToList().First()


我也考虑过替代

(from c in [IQueryableThing] where c.Id.Equals(id)).Single()


我假设.Single()速度更快,但是我担心这些都无​​法处理数据库中没有具有正确ID的对象的情况。我不在乎是否返回多个。我只想要其中之一。最终,我将实现一些东西以返回最近修改的东西。

基本上,我的问题是解决此问题的最佳方法是什么,该方式将可查询的对象转换为单个实例,该方法可以处理没有正确ID的对象而有多个ID正确的对象的情况。

最佳答案

听起来您只想调用FirstOrDefault(),它确实按照名称的含义进行了调用。
Default表示null

您不应致电ToList();这将不必要地从数据库中下载所有结果。

关于c# - .ToList()。First()和.Single之间的优点对于C#中的IQueryable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19367143/

10-17 02:03