Как я могу использовать linq, чтобы проверить, содержит ли флаг / побитовое перечисление тип?

следующий лямбда-оператор возвращает значение null, когда я надеялся, что он вернет строковое значение.

var countryCode = AddressComponents
    .Where(x => x.AddressType == AddressType.Country)
    .Select(x => x.ShortName)
    .SingleOrDefault();

теперь AddressType свойство текущего экземпляра, который я запрашиваю, содержит следующие данные:

AddressType.Political | AddressType.Country

, поэтому он содержит ДВА значения.

Конечно, моя лямбда не будет работать, потому что значение страны (допустим, это 1)! = значение политической побитовой или страны (допустим, это 1 | 2 == 3).

Есть идеи?

Я беспокоюсь, мне нужно что-то действительно ужасное, вроде ...

((AddressTypes & AddressType.Country) == AddressType.Country)

.. мысли?

5
задан Pure.Krome 7 October 2010 в 05:24
поделиться