il seguente stato lambda restituisce null, quando speravo che restituisse un valore stringa.Come posso usare linq per verificare se un flag/enumerazione bitwise contiene un tipo?
var countryCode = AddressComponents
.Where(x => x.AddressType == AddressType.Country)
.Select(x => x.ShortName)
.SingleOrDefault();
ora di proprietà AddressType dell'istanza corrente sto interrigating contiene i seguenti dati:
AddressType.Political | AddressType.Country
in modo che sia contenente due valori.
Ovviamente, il mio lambda non funzionerà, perché il valore del paese (assumiamo che sia 1)! = Il valore di Political bitwise o Paese (assumiamo che sia 1 | 2 == 3).
Qualche idea?
Sono preoccupato ho bisogno di avere qualcosa di veramente brutto come fraking ...
((AddressTypes & AddressType.Country) == AddressType.Country)
.. pensieri?
SERIO ?!/brb .... HAHAHAH mi sfiora :) Lo fa anche lui! Vincere. vincere ed el-winno-win !!! Che dire se vuoi controllare DUE flag. ad esempio AddressType.Country o AddressType.Foo? può HasFlag (AddressType.Country) | AddressType.Foo) lavoro? * (nota il carattere PIPE singolo) * –
@ Pure.Krome: Sì, dovrebbe funzionare. Da MSDN: "Il metodo HasFlag restituisce il risultato della seguente espressione booleana: thisInstance And flag = flag" – Ani