LINQ -Single运算符

dev*_*ium 3 .net c# linq vb.net

我在一本书上读到了这个操作符,但由于我没有那么多数据库,我想不出任何想要获得单个项目的环境.我的意思是,我可以有一套条件,但后来我会使用First或Last,而不是Single.有什么不同?让它只返回一个项目,如果没有结果或多个项目则抛出异常是什么意思?我想到的唯一事情就是确保只有一件物品.

谢谢!

Den*_*ler 6

这正是你想要的原因.有时,在结果集中有多个项目表示某个地方存在错误,如果不是这样,您会想要抛出异常.


Mar*_*ell 6

这里的经典示例是当你有一个id(因此期望数据存在,唯一的,由该id):

var item = ctx.SomeTable.Single(x=>x.Id == id);
Run Code Online (Sandbox Code Playgroud)

你可以检查SingleOrDefault是否有用(如果你得到一个更好的错误信息null),但得到2(或更多)肯定是一个大问题.