Проблема со ссылкой на членов анонимного типа в linq - PullRequest
0 голосов
/ 27 сентября 2019

Я получаю эту ошибку, ссылаясь на UserID в строке Value = x.UserID и аналогичные в следующей строке, ссылаясь на FirstName и LastName.Он говорит, что понимает, что они принадлежат анонимному типу, но по-прежнему говорит, что определения нет.

'IGrouping <, tblWorkorder>' не содержит определения для UserID и не имеет доступного метода расширения.'UserID', принимающий первый аргумент типа 'IGrouping <, tblWorkorder>', может быть найден (вам не хватает директивы using или ссылки на сборку?)

    public IEnumerable<SelectListItem> GetEnteredBy()
    {
        using (var context = new FacilityEntities())
        {
            List<SelectListItem> user = context.tblWorkOrder.AsNoTracking().Include("tblUser")
                .GroupBy(x => new { x.tblUser.LastName, x.tblUser.FirstName, x.tblUser.UserID })
                .Select(x =>
                new SelectListItem
                {
                    Value = x.UserID,
                    Text = string.Concat(x.FirstName, " ", x.LastName)
                }).ToList();
            var usertip = new SelectListItem()
            {
                Value = null,
                Text = "Select"
            };
            user.Insert(0, usertip);
            return new SelectList(user, "Value", "Text");
        }
    }

1 Ответ

1 голос
/ 27 сентября 2019

Вам не хватает key свойства для групповых элементов

Вот как вы можете сделать

  public IEnumerable<SelectListItem> GetEnteredBy()
    {
        using (var context = new FacilityEntities())
        {
            List<SelectListItem> user = context.tblWorkOrder.AsNoTracking().Include("tblUser")
                .GroupBy(x => new { x.tblUser.LastName, x.tblUser.FirstName, x.tblUser.UserID })
                .Select(x =>
                new SelectListItem
                {
                    Value = x.Key.UserID,
                    Text = string.Concat(x.Key.FirstName, " ", x.Key.LastName)
                }).ToList();
            var usertip = new SelectListItem()
            {
                Value = null,
                Text = "Select"
            };
            user.Insert(0, usertip);
            return new SelectList(user, "Value", "Text");
        }
    }

Надеюсь, это поможет.

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