如何在 MVC 控制器中全局声明变量的 var 关键字



我想在全局中为 mvc 控制器中的变量声明 var 关键字因为我多次使用该变量,这就是为什么我想将该变量用作全局变量的原因。但我不知道 var 是如何全局完成的,因为 var 是不同的类型,每个字符串、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
    {
    })

现在,这里的查询变量在代码中多次使用。现在,我想全局声明此查询变量。这是我尝试过的最新代码。在此错误中,通过在代码中给出红线来显示。

首先,您的"全局"定义不清楚。是要对一个类使用"查询"实例,还是要对一个类生成的所有类使用。

其次,如果你想用作全局变量,你应该像这样定义你的全局变量

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
        {
        })
    }
    }
}

最新更新