У меня есть коллекция объектов, и у каждого объекта есть свойство перечисления битовых полей.Я пытаюсь получить логическое ИЛИ свойства битового поля во всей коллекции.Как я могу сделать это, не зацикливаясь на коллекции (надеюсь, используя вместо этого LINQ и лямбду)?
Вот пример того, что я имею в виду:
[Flags]
enum Attributes{ empty = 0, attrA = 1, attrB = 2, attrC = 4, attrD = 8}
class Foo {
Attributes MyAttributes { get; set; }
}
class Baz {
List<Foo> MyFoos { get; set; }
Attributes getAttributesOfMyFoos() {
return // What goes here?
}
}
Я пытался использовать.Aggregate
вот так:
return MyFoos.Aggregate<Foo>((runningAttributes, nextAttributes) =>
runningAttributes | nextAttribute);
но это не работает, и я не могу понять, как использовать его, чтобы получить то, что я хочу.Есть ли способ использовать LINQ и простое лямбда-выражение для вычисления этого, или я застрял с использованием только цикла над коллекцией?
Примечание: Да, этот пример достаточно прост, что базовый foreach
это будет путь, так как он прост и не сложен, но это всего лишь упрощенная версия того, с чем я на самом деле работаю.