Я пытаюсь получить определенные ключи из строкового массива Request.Form.AllKeys, используя следующее:

var result = keys.Where(key => key.StartsWith("added"));

Результатом будет «Имя« результат »не существует в текущем контексте», что бы я ни делал.

Я также пробовал:

var result = (from keys in Request.Form.AllKeys
              where keys.StartsWith("added")
              select keys).ToArray();

То же самое.

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

С уважением, Жак

0
Jacques 24 Июл 2012 в 13:36
2
Вы не показали, где пытаетесь использовать result. Приведите короткий, но полный пример, демонстрирующий проблему.
 – 
Jon Skeet
24 Июл 2012 в 13:38
Привет, Джон, кажется, именно отсюда и возникла проблема. Будучи новичком в Linq, я не понимал, что объект будет иметь какое-то значение только после того, как его можно будет использовать. Как только я добавил if (result.Any ()), все сразу перешло в действие.
 – 
Jacques
24 Июл 2012 в 16:59
Что ж, вы все равно не должны были видеть ошибку времени компиляции (как это звучит), просто объявив переменную ...
 – 
Jon Skeet
24 Июл 2012 в 20:55

1 ответ

Лучший ответ

Я нашел ответ на свой вопрос: Отсрочка исполнения.

Когда я действительно выполнил код, а затем продолжил его, используя result.Any (), выражение было выполнено и дало правильные результаты.

0
Jacques 24 Июл 2012 в 16:44
1
Но предложенная вами ошибка звучит так, как будто она произошла во время компиляции . Или вы видели это в отладчике? (Вот где так важно четко сформулировать свой вопрос ...)
 – 
Jon Skeet
24 Июл 2012 в 20:55