2010-07-06 3 views
0
if(){...} 
else{...} 
      if (query.Count > 0){...} 

Показанный выше скелет, подобный тому, который я использую. В первой последовательности if-then-else я инициализирую переменную запроса (используемую в LINQ), называемую запросом, а затем проверяю ее на следующее if -statement. Тем не менее среда говорит, что запрос не представлен в текущем контексте. Если код из оператора if-then используется один - тогда никаких проблем не наблюдается. Мне кажется, что проблема заключается в инициализации переменной. Есть ли у вас другие предложения?Кволируемая переменная не может быть найдена в контексте

Если у вас есть идея, как инициализировать с нулевым значением переменную, которую нужно запросить со ссылкой, я тоже был бы рад услышать это. Спасибо!

ответ

0

Проблема заключается в том, что объем «запроса» переменной должно быть больше, чем объем, в котором вы определили «запрос».

Но поскольку вы использовали var, вы не можете объявить «запрос», пока не будет достаточно информации для компилятора, чтобы выбрать тип.

Чтобы решить, просто объявите тип переменной в требуемой области (не используйте var).

IEnumerable<Customer> query = null; 

if() 
{ 
    query = ... 
} 
else 
{ 
    query = ... 
} 

if (query.Any()) 

Ничто в Linq не зависит от использования var ключевого слова. Узнать больше о varhere.

2

Объявите переменную перед если-то еще:

//replace var with the actual type, of course 
var query; 
if(){...} 
else{...} 

if (query.Count > 0){...} 
+0

Что такое реальный класс ... Я ожидаю, что переменная будет состоять из списка (или в этом случае его первой записи, так что это тип IQuariable. var query; не разрешен, так как это не настоящая инициализация. – Branimir

+1

Как правило, это 'IEnumerable ', где T - это то, что вы делаете. –

Смежные вопросы