我有兩個代碼塊。我想知道他們是否相當如何正確添加Func到Linq?
properties = type.GetProperties()
.Where(IsNeverSerializedProperty)
.ToArray();
private static bool IsNeverSerializedProperty(PropertyInfo p)
{
return p.Name.Contains("Password") ||
p.GetCustomAttributes(typeof(EncryptedConfigurationItemAttribute), false).Any();
}
它是否等同於下面的代碼?
properties = type.GetProperties()
.Where(p => p.Name.Contains("Password"))
.Where(p => p.GetCustomAttributes(typeof(EncryptedConfigurationItemAttribute), true).Any()))
.ToArray();
如果它們不相同,我犯了什麼錯誤?
它們並不相同,因爲您向'GetCustomAttributes'提供了不同的參數。但是,爲什麼不直接在調試器中嘗試一下,看看自己是否是? – HimBromBeere
假設第二個示例的第3行上的'x'只是一個錯字,它們仍然不相同:第二個過濾所有名稱中包含「Password」_and_具有'EncryptedConfigurationItemAttribute'的屬性。第一個過濾這些條件的_either_屬性爲真的屬性。 – CompuChip
將兩個Where方法的謂詞放在一個Where方法中:Where(p => p.Name.Contains(...)&& p.GetCustomerAttributes(...), –