我需要一些簡化LINQ查詢的幫助。條件如下:簡化LINQ查詢
- 我需要將
bool IsValid(string expression)
應用於給定序列的每個元素。 - 如果
IsValid
對所有元素均爲true,則返回true
。 - 如果
IsValid
對於任何元素均爲false,則返回false
。 - 如果序列爲空或空,也返回
false
。
我想出了查詢
try
{
(sequence.DefaultIfEmpty().Where(item => !IsValid(item).Count() == 0)
}
catch (ArgumentNullException)
{
return false;
}
的一點是,IsValid(null)
拋出一個ArgumentNullException
這是由catch
塊捕獲。但是,我認爲這太棘手。沒有任何方法可以簡化方法而不依賴於這個事實?
是的,你是對的!但是,這引發了ReSharper的「可能的IEnumerable多重枚舉」警告,我想避免這種警告。 – User
DefaultIfEmpty將只返回一個空項目 - 這裏的目的是什麼? –
是剛剛修復那部分,沒有看到空集合的要求 – BrokenGlass