настоящая проблема с этим кодом не в самом коде.
Переменная, которой я назначаю ресурс, затем используется как часть предложения linq where.
Вы не поверите, так как у меня сегодня 3 человека чесали головы.
ситуация была такая:
У меня есть набор утверждений контракта, которые обеспечивают предварительное условие, что app.Current.Resources не является пустым - все они проходят
Ради демонстрации странности я назначаю ресурс двум отдельным строкам. один из которых используется в предложении linq where, другой - для демонстрации того, что извлечение строки из ресурса действительно работает. Строка, которая находится в предложении where, имеет значение null и не может иметь ничего, кроме null. Другая строка содержит данные, как и ожидалось. Обе строки назначены для использования одинакового кода. Еще более странно, что если я инициализирую строку, чтобы сказать «john», а затем присваиваю ему данные ресурса и затем использую это в linq, то присвоение «john» этой строке также приводит к тому, что строка является нулевой. Линк работал над XElement в то время.
string test = "John";
test = (string)App.Current.Resources["applicationName"];
var results = from ........
where x == test
select something
это привело к тому, что тест не был установлен в john - IE linq после того, как опрашиваемый код оказывает влияние на назначение.
Исправление проблемы состояло в том, чтобы переместить linq в другой метод, а затем все стало нормально. Я не имею ни малейшего понятия, почему это произошло.
Я бы хотел знать, хотя. Я очень хочу воссоздать его в новом проекте и отправить в Microsoft TBH. Но я надеюсь, что есть очевидное и рациональное объяснение.