是否有任何功能差异:
if (photos.Any(it => it.Archived))
Run Code Online (Sandbox Code Playgroud)
和
if (photos.Where(it => it.Archived).Any())
Run Code Online (Sandbox Code Playgroud)
如果是这样,是否有更令人信服的理由使用一个而不是另一个?
从功能上讲,他们做同样的事情.性能取决于特定的提供程序,但是例如在LINQ to SQL中,两种形式都生成完全相同的SQL:
SELECT
(CASE
WHEN EXISTS(
SELECT NULL AS [EMPTY]
FROM [dbo].[photos] AS [t0]
WHERE [t0].[Archived] = 1
) THEN 1
ELSE 0
END) AS [value]
Run Code Online (Sandbox Code Playgroud)
如果我必须选择一个,我会使用第一个选项,因为它似乎对我来说更加清晰.