使用带有Single()的LINQ时,我总是以绿色下划线代码,并提示"将单个调用替换为单个".这是什么意思?以下是产生该建议的一行代码示例:
var user = db.Users.Where(u => u.UserID == userID).Single();
Run Code Online (Sandbox Code Playgroud)
如你所见,我只使用Single()一次.那么......这笔交易是什么?
Lee*_*Lee 45
我假定这意味着,使用的过载Single,这需要谓词,而不是使用Where与Single一起:
var user = db.Users.Single(u => u.UserID == userID);
Run Code Online (Sandbox Code Playgroud)
一堆 Linq 表达式Enumerable Methods 以这种方式工作,就像Single方法一样,它接受一个谓词,并且只有在条件满足(测试通过)时才返回 true,否则返回 false。
这些应该一起使用,而不是 Where() 和 Single() :
var user = db.Users.Single(u => u.UserID == userID);
// Checks for if there is one and, only one element that satisfy the condition.
Run Code Online (Sandbox Code Playgroud)
和
var user = db.Users.Any(u => u.UserID == userID);
// Checks for if there are any elements that satisfy the condition.
Run Code Online (Sandbox Code Playgroud)
和
var user = db.Users.All(u => u.UserID == userID);
// Checks if all elements satisfy the condition.
Run Code Online (Sandbox Code Playgroud)