Как объявить ключевое слово var для переменной глобально в контроллере MVC - PullRequest
0 голосов
/ 18 января 2019

Я хочу объявить ключевое слово var в глобальном масштабе для переменной в контроллере mvc Потому что я использую эту переменную несколько раз, поэтому я хочу использовать эту переменную в глобальном масштабе. Но я не знаю, как var было сделано глобально, потому что var - это другой тип в соответствии с string, int, decimal для размещения в глобальном масштабе.

Для большей ясности посмотрим код

var query = new List<T>();
if (model.CategoryId == -1)
{
   query = _Db.Purchase.Where(w => w.IsIncludeIntoStock == true).ToList().GroupBy(x => new { x.ManufacturerId, x.CategoryId, x.Weight, x.WeightTypeId }).ToList();
}
else
{
   query = _Db.Purchase.Where(w => w.IsIncludeIntoStock == true && w.CategoryId == model.CategoryId).ToList().GroupBy(x => new { x.ManufacturerId, x.CategoryId, x.Weight, x.WeightTypeId }).ToList();
}
var dataList = (from x in query
    select new
    {
    })

Теперь, здесь переменная запроса многократно используется в коде. Теперь я хочу объявить глобально эту переменную запроса. Это последний код, который я пробовал. В этой ошибке показывается красная линия в коде.

1 Ответ

0 голосов
/ 20 января 2019

Во-первых, ваше «глобальное» определение неясно. Вы хотите использовать экземпляр «query» для одного класса или хотите использовать его для всех классов, созданных одним классом.

Во-вторых, если вы хотите использовать в качестве глобального, вы должны определить свою глобальную переменную следующим образом:

List<dynamic> query=new List<dynamic>(); 

конечно, такой подход не является здоровым способом (динамическое использование с c #)

Кстати, вы не можете использовать ключевое слово "var" вне функций. Вы должны использовать определенный тип переменной назначения на уровне класса.

Определение переменной на уровне класса

В данном фрагменте кода я пытаюсь определить глобальную переменную на уровне класса.

public class MyTestClass
{
 List<dynamic> query=new List<dynamic>(); 

public MyTestClass()
{
}

public void generateQuery()
{

if (model.CategoryId == -1)
{
query = _Db.Purchase.Where(w => w.IsIncludeIntoStock == true).ToList().GroupBy(x => new { x.ManufacturerId, x.CategoryId, x.Weight, x.WeightTypeId }).ToList();
}
else
{
   query = _Db.Purchase.Where(w => w.IsIncludeIntoStock == true && w.CategoryId == model.CategoryId).ToList().GroupBy(x => new { x.ManufacturerId, x.CategoryId, x.Weight, x.WeightTypeId }).ToList();
}
var dataList = (from x in query
    select new
    {
    })

}
}
}

Давайте попробуем осветить другой подход.

Использовать переменную сгенерированного класса в качестве глобальной переменной

В настоящее время вы можете определить свою глобальную переменную в классе предков

public class MyAncestorClass
{

    List<dynamic> query=query=new List<dynamic>(); 

}


public class MyChildClass:MyAncestorClass
{

 public void generateQuery()
    {

    if (model.CategoryId == -1)
    {
    query = _Db.Purchase.Where(w => w.IsIncludeIntoStock == true).ToList().GroupBy(x => new { x.ManufacturerId, x.CategoryId, x.Weight, x.WeightTypeId }).ToList();
    }
    else
    {
       query = _Db.Purchase.Where(w => w.IsIncludeIntoStock == true && w.CategoryId == model.CategoryId).ToList().GroupBy(x => new { x.ManufacturerId, x.CategoryId, x.Weight, x.WeightTypeId }).ToList();
    }
    var dataList = (from x in query
        select new
        {
        })

    }
    }

}
...