将 2 个 ienumerable 与不同类型(一对多)结合起来
combine 2 ienumerable with distinct type (one to many)
我必须这样列出:
IEnumerable<Entities.Article> articlelist;
IEnumerable<Entities.MeasureUnit> measureList
我想将列表合二为一。将一篇文章与所有度量单位组合在一个仅包含名称文章、ID 度量单位、名称度量单位的共享列表中。
您可以对列表中的每个项目执行两个循环,但我想知道是否有办法使用 linq 使其更简单。
Foreach 示例:
foreach(Entities.Article article in articlelist.ToList())
{
foreach(Entities.MeasureUnit measureUnit in measureList.ToList())
{
searchList.Add(new Models.SearchItem() { IDItem = measureUnit.IDMeasureUnit, PrincipalProperty = article.Description, SecondaryProperty = measureUnit.Description });
}
}
您可以使用 SelectMany
来构建这个笛卡尔积:
IEnumeable<Models.SearchItem> searchItems = articlelist
.SelectMany(article => measureList, (a, m)
=> new Models.SearchItem() { IDItem = m.IDMeasureUnit, PrincipalProperty = a.Description, SecondaryProperty = m.Description });
我必须这样列出:
IEnumerable<Entities.Article> articlelist;
IEnumerable<Entities.MeasureUnit> measureList
我想将列表合二为一。将一篇文章与所有度量单位组合在一个仅包含名称文章、ID 度量单位、名称度量单位的共享列表中。
您可以对列表中的每个项目执行两个循环,但我想知道是否有办法使用 linq 使其更简单。
Foreach 示例:
foreach(Entities.Article article in articlelist.ToList())
{
foreach(Entities.MeasureUnit measureUnit in measureList.ToList())
{
searchList.Add(new Models.SearchItem() { IDItem = measureUnit.IDMeasureUnit, PrincipalProperty = article.Description, SecondaryProperty = measureUnit.Description });
}
}
您可以使用 SelectMany
来构建这个笛卡尔积:
IEnumeable<Models.SearchItem> searchItems = articlelist
.SelectMany(article => measureList, (a, m)
=> new Models.SearchItem() { IDItem = m.IDMeasureUnit, PrincipalProperty = a.Description, SecondaryProperty = m.Description });