将 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 });