如何在c# / ASP中为每个循环编写更好的代码.NET / EF核心



我想知道如何编写比下面更好的代码。它是有效的,但我认为必须有一个更好的方式来写它。也许用一些Lambda表达式?

var dataList = new List<MyModel>();
foreach (var data in dataArray)
{
var model = new MyModel();
model.Name = data.Name;
model.LastName = data.LastName;

model.Model = "";
model.SubModel = "";
if (data.Cars.Any())
{
foreach (var car in data.Cars)
{
model = new MyModel();
model.Name = data.Name;
model.LastName = data.LastName;
model.Model = car.Model;
model.SubModel = "";
if (car.SubModels.Any())
{
foreach (var subModel in car.SubModels)
{
model = new MyModel();
model.Name = data.Name;
model.LastName = data.LastName;
model.Model = car.Model;
model.SubModel = subModel.Model;
dataList.Add(model);
}
}
else
{
dataList.Add(model);
}
}
}
else
{
dataList.Add(model);
}
}

试图将其转换为VS中的Lync

伪代码未测试。您还需要三个构造函数来创建模型类。或者你可以用属性init:

new Model() { Name = data.Name, 
LastName = data.LastName, Model = car.Model, SubModel = subModel.Model}
var dataList = dataArray
.Select(item => item.Cars)
.Select(car => new Model(data.Name,data.LastName,car.Model,subModel.Model))
.Concat(item => item.SubModel
.Select(subModel => new Model(data.Name,data.LastName,car.Model,subModel.Model,subModel.Model)))
.Concat(dataArray.Select(data => new Model(data.Name,data.LastName)))

最新更新