我有一个EF数据结构,其数据嵌套了两层深度,看起来大致如下:
class Country {
string Name {get; set;}
ICollection<State> States {get; set;}
}
class State {
string Name {get; set;}
ICollection<County> Counties {get; set;}
}
class County {
string Name {get; set;}
}
或者:一个国家有州,每个州都有县。
我为这个例子简化了很多远程外观,所以我的DTO模型在这里实际上是相同的结构。使用ValueInjector
我希望我的代码看起来像。
var dbCountry = _dbContext.Countries.Find(id);
var dtoCountry = new DTO.Country();
dtoCountry.InjectFrom<FlatLoopInjection>(dbCountry);
foreach (var dbState in dbCountry.States) {
var dtoState= new DTO.State();
dtoState.InjectFrom(dbState);
dtoState.Counties = dbState
.Counties
.Select(m => new DTO.County().InjectFrom(m))
.Cast<DTO.County>()
.ToList();
dtoCountry.States.Add(dtoState);
}
问题是:如果没有foreach
循环,有没有办法解决这个问题?并不是说我是反循环(并且我喜欢用巨魔开始一场神圣的战争),但这似乎将两种模式混合在一起(linq和循环)。
感谢。