#asp.net #entity-framework #linq #linq-to-sql
#asp.net #entity-framework #linq #linq-to-sql
Вопрос:
private void ChartConfig()
{
var qnb;
for (int o = 1601; o < 1612 1; o )
{
if (o == 1601)
{
qnb = (from gog in db.SPerf_Notes
where gog.Module == ASPxComboBox1.Text.Trim()
select new { gog.Module, gog.KPI_Name, gog._1 }).ToList();
}
else
{
qnb = (from gog in db.SPerf_Notes
where gog.Module == ASPxComboBox1.Text.Trim()
select new { gog.Module, gog.KPI_Name, gog._11 }).ToList();
}
foreach (var a in qnb)
{
list3.Add(a.Module.Trim());
list3.Add(a.KPI_Name.Trim());
list3.Add(a._1.ToString());
}
}
В верхней части страницы я инициализировал var qnb;
, но я думаю, что это не работает.
Ошибка :
Ошибка 123 Неявно типизированные локальные переменные должны быть инициализированы
Как я могу решить эту проблему?
Ответ №1:
вы можете создать свой qnb
следующим образом
IEnumerable<object> qnb= Enumerable.Empty<object>();
Ответ №2:
Из документации: «var можно использовать только тогда, когда локальная переменная объявлена и инициализирована в том же операторе»
Когда вы используете var
ключевое слово для объявления переменной, эта переменная называется «неявно типизированной». Это означает, что компилятор определяет тип переменной на основе значения, которое вы ей присвоили.
Лучший способ справиться с этим в вашем коде был бы таким:
private void ChartConfig()
{
for (int o = 1601; o < 1612 1; o )
{
var qnb = (from gog in db.SPerf_Notes
where gog.Module == ASPxComboBox1.Text.Trim()
select new {
gog.Module,
gog.KPI_Name,
(o == 1601 ? gog._1 : gog._11) //You should give this field a name
}).ToList();
foreach (var a in qnb)
{
list3.Add(a.Module.Trim());
list3.Add(a.KPI_Name.Trim());
list3.Add(a._1.ToString());
}
}