我想问一下这句话中的“var”是什么。
var context = new MHC_CoopEntities();
var lists = (from c in context.InventLists
select new
{
c.InventID,
c.ItemName,
c.InventCategory.CategoryID,
c.UnitQty,
c.UnitPrice
}).ToList();
ListGridView.DataSource = lists;
ListGridView.DataBind();
我知道“var”可以是任何值。我正在尝试为此创建一个辅助类。
答案 0 :(得分:3)
这将是一个新的匿名类型。如果你需要在函数之间传递它,你应该首先声明自定义类型(我称之为InventType
):
public class InventType {
int InventId { set; get; }
string ItemName { set; get; }
int CategoryId { set; get; }
int UnitQty { set; get; }
decimal UnitPrice { set; get; }
}
var lists = (from c in context.InventLists
select new InventType
{
InventId = c.InventID,
ItemName = c.ItemName,
CategoryId = c.InventCategory.CategoryID,
UnitQty = c.UnitQty,
UnitPrice = c.UnitPrice
}).ToList();
现在var
代表List<InventType>
。
答案 1 :(得分:3)
var
与实体框架无关。它是一个纯C#构造,允许您定义隐式类型对象。它在documentation中有所解释。基本上它允许编译器从赋值的右侧推断出变量的实际类型。这可以避免您重复两次相同的类型声明。对于没有名称的匿名类型也是必要的。例如:
var foo = new { Id = 123, Name = "anon" };
这正是你的例子中发生的事情。在select子句中,您将返回匿名类型。所以唯一的方法是使用var
。
在第一个例子中:
var context = new MHC_CoopEntities();
相当于:
MHC_CoopEntities context = new MHC_CoopEntities();
因为我们知道类型。