Die folgende Lambda-Statement-Anweisung gibt null zurück, wenn ich hoffte, dass sie einen String-Wert zurückgeben würde.Wie kann ich linq verwenden, um zu überprüfen, ob eine flags/bitwise Enumeration einen Typ enthält?
var countryCode = AddressComponents
.Where(x => x.AddressType == AddressType.Country)
.Select(x => x.ShortName)
.SingleOrDefault();
jetzt die Address Eigenschaft der aktuellen Instanz enthält ich bin interrigating die folgenden Daten:
AddressType.Political | AddressType.Country
so wird es zwei Werte enthält.
Natürlich funktioniert mein Lambda nicht, weil der Wert von country (nehmen wir an, es ist 1)! = Der Wert von Political bitwise oder Country (nehmen wir an, es ist 1 | 2 == 3).
Irgendwelche Ideen?
Ich mache mir Sorgen, ich brauche etwas wirklich haben fraking hässlich wie ...
((AddressTypes & AddressType.Country) == AddressType.Country)
.. Gedanken?
ERNST ?!/brb .... HAHAHAH frag mich :) Es tut es auch! Sieg. gewinnen und el-winno-win !!! Wie wäre es, wenn Sie nach ZWEI Flaggen suchen? zB AddressType.Country oder AddressType.Foo? kann HasFlag (AddressType.Country) | AddressType.Foo) funktioniert? * (beachte das einzelne PIPE-Zeichen) * –
@ Pure.Krome: Ja, das sollte funktionieren. Von MSDN: "Die HasFlag-Methode gibt das Ergebnis des folgenden booleschen Ausdrucks zurück: thisInstance And flag = flag" – Ani