#c# #entity-framework #linq
#c# #entity-framework #linq
Вопрос:
Я пытаюсь преобразовать эти данные в viewmodel, но я не уверен, как это сделать. Приведенный ниже пример — это тип данных, с которыми я работаю. У него есть список объектов с другим списком объектов, и он должен выровнять ListOfCarModel и построить viewmodel. Любая помощь была бы отличной.
static void Main(string[] args)
{
try
{
List<carmake> carmakes = new List<carmake>();
List<carmodel> carmodel = new List<carmodel>();
carmodel.Add(new carmodel() { Modelid = 1, Model = "S60" });
carmodel.Add(new carmodel() { Modelid = 2, Model = "A4" });
carmodel.Add(new carmodel() { Modelid = 3, Model = "A4s" });
carmakes.Add(new carmake() { Makeid = 1, MakeName = "Volvo",ListOfCarModel= carmodel });
List<carmodel> carmodel2 = new List<carmodel>();
carmodel2.Add(new carmodel() { Modelid = 4, Model = "535d" });
carmodel2.Add(new carmodel() { Modelid = 5, Model = "320d" });
carmodel2.Add(new carmodel() { Modelid = 6, Model = "M5" });
carmakes.Add(new carmake() { Makeid = 2, MakeName = "BMW",ListOfCarModel= carmodel2 });
List<carmodel> carmodel3 = new List<carmodel>();
carmodel2.Add(new carmodel() { Modelid = 4, Model = "Passat" });
carmodel2.Add(new carmodel() { Modelid = 5, Model = "dd" });
carmodel2.Add(new carmodel() { Modelid = 6, Model = "aaa" });
carmakes.Add(new carmake() { Makeid = 3, MakeName = "VW", ListOfCarModel = carmodel3 });
var listOfCars = carmakes.Select(x => new CarViewModel
{
Model = x.MakeName,
//MakeName = x.ListOfCarModel.SelectMany(x.ListOfCarModel)
});.ToList()
}
catch (Exception ex)
{
ex.ToString();
}
}
class carmake
{
public int Makeid { get; set; }
public string MakeName { get; set; }
public List<carmodel> ListOfCarModel { get; set; }
}
class carmodel
{
public int Modelid { get; set; }
public string Model { get; set; }
}
class CarViewModel
{
public string MakeName { get; set; }
public string Model { get; set; }
}
}
Ответ №1:
Попробуйте это:
List<CarViewModel> viewModels = new List<CarViewModel>();
foreach (var make in carmakes)
foreach (var model in make.ListOfCarModel)
viewModels.Add(new CarViewModel() { MakeName = make.MakeName, Model = model.Model });
Или, если вы хотите использовать LINQ:
List<CarViewModel> viewModels = carmakes
.Select(carmake => carmake.ListOfCarModel.Select(x => new CarViewModel() { MakeName = carmake.MakeName, Model = x.Model }))
.SelectMany(x => x)
.ToList();