Что такое «var» в Entity Framework - PullRequest
0 голосов
/ 16 октября 2011

Я хотел бы спросить, что означает "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" может быть любым значением. Я пытаюсь создать вспомогательный класс для этого.

Ответы [ 2 ]

3 голосов
/ 16 октября 2011

var не имеет ничего общего с Entity Framework. Это чистая конструкция C #, позволяющая определять неявно типизированный объект. Это объясняется в документации . По сути, это позволяет компилятору выводить фактический тип переменной с правой стороны присваивания. Это позволяет избежать повторения одного и того же объявления типа дважды. Это также необходимо для анонимных типов, которые не имеют имени. Например:

var foo = new { Id = 123, Name = "anon" };

И это именно то, что происходит в вашем примере. В предложении select вы возвращаете анонимный тип. Таким образом, единственный способ - использовать var.

В первом примере:

var context = new MHC_CoopEntities();

это эквивалентно:

MHC_CoopEntities context = new MHC_CoopEntities();

потому что мы знаем тип.

3 голосов
/ 16 октября 2011

Это будет новый анонимный тип.Если вам нужно передать его между функциями, вы должны сначала объявить пользовательский тип (я назвал его 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>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...