не может безразличия конвертировать список - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу получить чек в статусе сотрудников, но он позволяет мне вернуть только одного из них, First или FirstOrDefault, когда я пытаюсь преобразовать его в список, он говорит мне:

Невозможно преобразовать Список <> в ..Data.Entities.Checkinout

EmployeeCollection = (from userinfo in context.Userinfo
   join department in context.Dept on userinfo.Deptid equals department.Deptid
   where id == userinfo.Userid
   select new Employee()
   {
     Name = userinfo.Name,
     Department = department.DeptName,
     CardNumber = userinfo.CardNum,
     Status = userinfo.UserFlag.ToString(),
     ActualCheckinStatuse = (from checkinout in context.Checkinout
         join status in context.Status on checkinout.CheckType equals status.Statusid
         where checkinout.Userid == userinfo.Userid
         orderby checkinout.CheckTime descending
         select new Checkinout
         {
           CheckStatus = status.StatusText,
           CheckTime = checkinout.CheckTime
         }).First()
   }
).ToList()

1 Ответ

0 голосов
/ 09 ноября 2018

Часть вашего кода выглядит следующим образом:

       new Employee()
{
  Name = ...,
  Department = ...,
  CardNumber = ...,
  Status = ...,
  ActualCheckinStatuse = (from checkinout in context.Checkinout
      join status in context.Status on checkinout.CheckType equals status.Statusid
      where checkinout.Userid == userinfo.Userid
      orderby checkinout.CheckTime descending
      select new Checkinout
      {
        CheckStatus = status.StatusText,
        CheckTime = checkinout.CheckTime
      }).First()
}

Здесь выражение (from checkinout in ... select new Checkinout { ... }) будет перечислением (или последовательностью, если вы предпочитаете) из Checkinout экземпляров.Когда вы делаете .First() для этого, как указано выше, результатом будет один экземпляр типа Checkinout.

Насколько я понимаю, это хорошо компилируется.И это потому, что свойство ActualCheckinStatuse, которое вы присваиваете в этом инициализаторе, имеет тот же объявленный тип, Checkinout.

Если вместо этой круглой скобки (from checkinout in ... select new Checkinout { ... }) вы добавите .ToList(), тогда выget - это все эти Checkinout экземпляры в .NET List<> в памяти.Конечно, вы не можете присвоить это ActualCheckinStatuse, потому что типы не совместимы.Один Checkinout, называемый ActualCheckinStatuse, не может быть установлен на целое List<> таких Checkinout с.

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