LINQ-файлер в качестве необходимой модели и добавление списка в оператор выбора - PullRequest
0 голосов
/ 15 февраля 2020

Мне нужен доступ к следующему списку. Mainlist - содержит список оборудования, и он будет отображаться со следующей моделью.

public class BTypeModel
{
    public string Image { get; set; }
    public int? id { get; set; }
    public string bName { get; set; }
    public string alterName { get; set; }
    public string number { get; set; }
    public List<MainEquipment> equipment { get; set; }
    public string displayName { get; set; }

}


public class MainEquipment
{
    public int id { get; set; }
    public string name { get; set; }

}

Моя проблема в том, что я не могу получить доступ к списку оборудования

см. Как следует

var available = MainList
     .Where(o => o.bType?.id == placeid)
     .Select(s => new BTypeModel {
      displayName = s.Type.name,
      id = s.id,
      number = s.number,
      Image = s.files.FirstOrDefault()?.Image,
      alterName = s.alternateName,
      equipment=s.mainequipmentlist.Select(a=>a.id), *

// Выбор - это то, что дает ошибку. Неважно, если я выбираю int или строку, ошибка одна и та же, просто измените

'System.Collections.Generi c .IEnumerable' Не удается неявно преобразовать тип 'System.Collections.Generi c .IEnumerable 'to' System.Collections.Generi c .List '. Существует явное преобразование (вам не хватает приведения?)

equipment=s.mainequipmentlist.Select(a=>a.id)

Я не могу заставить его отобразить этот список - ** ошибка может преобразовать int в общий c list- **

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

equipment свойство в BTypeModel классе имеет тип List<MainEquipment>, ваш equipment=s.mainequipmentlist.Select(a=>a.id) проецирует только ids с помощью метода Select ().

equipment=s.mainequipmentlist.Select(a=>a.id) вернет IEnumerable и пытается назначьте его на List<MainEquipment>. Это причина ошибки.

Чтобы решить эту проблему, присвойте s.mainequipmentlist свойству equipment. Или создайте новое свойство в BTypeModel для equipmentIds типа IEnumerable<int> и присвойте ему прогнозируемые идентификаторы, такие как

var available = MainList
     .Where(o => o.bType?.id == placeid)
     .Select(s => new BTypeModel {
           ... 
           equipment = s.mainequipmentlist,  //Either  
           ids = s.mainequipmentlist.Select(a=>a.id) //or solution
           ...
      }

Enumerable.Select Method

0 голосов
/ 16 февраля 2020

Я использовал это как ссылку

, чтобы преобразовать неперечисляемый список linq в печатный список

вместо этого

equipment = s.mainequipmentlist .Выберите (a => a.id),

сделать это - конвертировать в модель

equipment = s.mainequipmentlist.Select(p => new BTypeModel {name= p.name ,id=p.id }).ToList() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...