"用单一呼叫替换"是什么意思?

Leg*_*ion 19 .net c# linq

使用带有Single()的LINQ时,我总是以绿色下划线代码,并提示"将单个调用替换为单个".这是什么意思?以下是产生该建议的一行代码示例:

var user = db.Users.Where(u => u.UserID == userID).Single();
Run Code Online (Sandbox Code Playgroud)

如你所见,我只使用Single()一次.那么......这笔交易是什么?

Lee*_*Lee 45

我假定这意味着,使用的过载Single,这需要谓词,而不是使用WhereSingle一起:

var user = db.Users.Single(u => u.UserID == userID);
Run Code Online (Sandbox Code Playgroud)

  • 真好!当ReSharper对FirstOrDefault()提供类似建议时,这也对我有所帮助。 (2认同)

AD.*_*Net 8

var user = db.Users.Single(u => u.UserID == userID)
Run Code Online (Sandbox Code Playgroud)

句法糖


Cra*_*gen 5

一堆 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)