el siguiente lambda statemement devuelve nulo, cuando esperaba que devolviera un valor de cadena.¿Cómo puedo usar linq para verificar si una enumeración de flags/bitwise contiene un tipo?
var countryCode = AddressComponents
.Where(x => x.AddressType == AddressType.Country)
.Select(x => x.ShortName)
.SingleOrDefault();
ahora la propiedad AddressType de la instancia actual estoy interrigating contiene los siguientes datos:
AddressType.Political | AddressType.Country
por lo que es que contiene dos valores.
Por supuesto, mi lambda no funcionará, porque el valor del país (supongamos que es 1)! = El valor de bit a bit político o país (supongamos que es 1 | 2 == 3).
¿Alguna idea?
Me preocupa tengo que tener algo realmente feo como fraking ...
((AddressTypes & AddressType.Country) == AddressType.Country)
.. pensamientos?
SERIOUS?/brb .... HAHAHAH frak me :) ¡Lo hace también! Ganar. ganar y el-winno-win !!! ¿Qué tal si quieres verificar DOS banderas? por ejemplo, AddressType.Country o AddressType.Foo? puede HasFlag (AddressType.Country) | AddressType.Foo) ¿funciona? * (observe el único carácter PIPE) * –
@ Pure.Krome: Sí, eso debería funcionar. Desde MSDN: "El método HasFlag devuelve el resultado de la siguiente expresión booleana: thisInstance And flag = flag" – Ani