我正在遍歷一個串列,如下所示:
var user = Userlist.FirstOrDefault(t => t.userId == currentUserId);
if (user != null)
{
//do whatever
}
如果沒有找到元素,它會回傳null,我可以檢查它。
但如果我使用 .First(),它會快一點。但是如果沒有找到元素,它會給出一個序列錯誤,Sequence contains no matching element
var user = Userlist.First(t => t.userId == currentUserId);
那么,我可以在 LINQ 中使用 First(),如果沒有找到元素,在繼續之前先檢查一下,因為我發現 First() 更快?
uj5u.com熱心網友回復:
不,如果在可列舉中找不到匹配項,則IEnumerable<T>.First() 故意拋出例外。這是設計使然,這就是FirstOrDefault()擴展存在的原因。
First()并且FirstOrDefault()應該具有非常相似(如果不相同)的性能。它們都將在 O(n) 時間內執行。
如果您認為First()如果找不到匹配元素會產生例外,那么該例外對性能的影響幾乎肯定會比進行空檢查要差得多。空檢查非常快。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454022.html
上一篇:GroupBybool和Selectvaluesfornewlist
下一篇:字串串列中的簡單LINQ
