私は2ブロックのコードを持っています。彼らが同等かどうか疑問に思っていた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
2番目の例の3行目の 'x'が単にタイプミスであると仮定すると、それらは依然として同等ではありません:2番目のプロパティは、名前に" EncryptedConfigurationItemAttribute "を持つ" Password "_and_を含むすべてのプロパティをフィルタリングします。最初のものは、これらの条件のいずれかが真であるプロパティをフィルタリングします。 – CompuChip
両方のWhereメソッドの述語を1つのWhereメソッドに入れる方が効率的ではないでしょうか。.Where(p => p.Name.Contains(...)&& p.GetCustomerAttributes(...)、 –