我想在全局中为 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
{
})
}
}
}