有一件事我真的没有找到答案:
db.Sensors.Where(s => s.Id == id).Single();
这里的Single()是必要的吗?通常只会给出一个结果,但是否真的需要添加它,或者它是多余的?最佳实践是什么?
发布于 2018-08-07 08:42:58
您可以将它们组合起来:
db.Sensors.Single(s => s.Id == id);
发布于 2018-08-07 08:39:32
在您的特定情况下,它可能不是必需的,但Single()强制只能有一个结果,并且如果有多个或少于一个结果,则会抛出异常。在某些情况下,多个或多个结果会突出显示一个bug,那么这可能是有用的。
来自MSDN:
Single(IEnumerable)
返回序列中唯一的元素,如果序列中只有一个元素,则引发异常。
单个(IEnumerable, 函数)
返回序列中唯一满足指定条件的元素,如果存在多个这样的元素,则引发异常。
发布于 2018-08-07 08:42:58
Where返回一个IEnumerable,其中as Single返回一个对象,如果有0个或多个对象,则抛出异常,正如其他答案所暗示的那样-
但是请注意:这意味着它必须检查所有对象,因此会有性能损失--如果你确信只会有一个对象(即数据库上有一个唯一的约束),那么你可以使用First()来获取单个对象,而不是检查所有其他对象的重复项。
https://stackoverflow.com/questions/51722349
复制