這裏的答案是Linq的任何方法...
// Returns true if any of the items in the collection have a 'property' which is true...
myBool = myList.Any(o => o.property);
傳遞給任何方法的參數是一個謂語。 Linq將針對集合中的每個項目運行該謂詞,如果其中任何項目通過,則返回true。
請注意,在此特定示例中,謂詞僅適用於「屬性」被假定爲布爾值(這在您的問題中已隱含)。是另一種類型的「財產」,謂詞在測試時必須更加明確。
// Returns true if any of the items in the collection have "anotherProperty" which isn't null...
myList.Any(o => o.anotherProperty != null);
你不一定必須使用lambda表達式寫的謂語,你可以在方法封裝測試...
// Predicate which returns true if o.property is true AND o.anotherProperty is not null...
static bool ObjectIsValid(Foo o)
{
if (o.property)
{
return o.anotherProperty != null;
}
return false;
}
myBool = myList.Any(ObjectIsValid);
您也可以重複使用,在其他謂詞LINQ的方法...
// Loop over only the objects in the list where the predicate passed...
foreach (Foo o in myList.Where(ObjectIsValid))
{
// do something with o...
}
是使用LINQ,但不要使用'Count()> 0',因爲您需要處理整個列表以獲取計數,然後進行評估。一旦找到第一個匹配項,使用'Any()'來短路。此外,而不是做'如果(條件)返回true;否則返回false;',只是做'返回條件';' –
感謝您的提示 – Rumplin