C# 使用C从同一类型的多个不同列表中创建一个列表

C# 使用C从同一类型的多个不同列表中创建一个列表,c#,arrays,asp.net-mvc-3,linq,list,C#,Arrays,Asp.net Mvc 3,Linq,List,我正在开发一个asp.NETMVC3应用程序。我正在使用LINQ从数据库中获取数据: public object GetFieldsForDocument() { DocumentFieldsRepository.Context = FieldsRepository.Context; var model = DocumentFieldsRepository.All() .Join(Fiel

我正在开发一个asp.NETMVC3应用程序。我正在使用LINQ从数据库中获取数据:

 public object GetFieldsForDocument()
        {
            DocumentFieldsRepository.Context = FieldsRepository.Context;

            var model = DocumentFieldsRepository.All()
                    .Join(FieldsRepository.All(),
                        df => df.FieldId,
                        f => f.Id,
                        (df, f) => df).ToList();
            return model;
        }
然后在我的控制器中,我有:

List<MCS_DocumentFields> model = (List<MCS_DocumentFields>)DocumentFieldsService.GetFieldsForDocument();
            model = model.Where(x => x.DocumentId == 10005)
                .OrderBy(x => x.ContentTypeId)
                .ThenBy(x => x.RowNo)
                .ThenBy(x => x.ColumnNo)
                .ToList();
但是现在我需要将它组合到一个MCS_DocumentFields类型的数据结构中,这样我就可以将它传递到我的视图中,然后从带有foreach语句的视图中使用我的局部视图显示数据

我不知道如何将这四个部分结合在一起,保持不同部分之间的分离


现在VisualStudio显示这四个变量是IGrouping类型的

您可以像这样使用concat函数

var MCS_DocumentFields = headerItems.Concat(drawItem)
                                .Concat(bodyItems)
                                .Concat(footerItems)
                                .ToList();

您可以像这样使用concat函数

var MCS_DocumentFields = headerItems.Concat(drawItem)
                                .Concat(bodyItems)
                                .Concat(footerItems)
                                .ToList();

我将改用Union,但您可以通过添加SelectManyi=>I来使用上述Concat方法:

var MCS_DocumentFields = headerItems.SelectMany(i => i)
                            .Concat(drawItem)
                            .Concat(bodyItems.SelectMany(i => i))
                            .Concat(footerItems)
                            .ToList();

我强烈建议不要使用ToList。改为使用一个可计算的。Each.ToList循环集合,对于一个numerable,您只循环一次。

我将使用Union,但您可以通过添加SelectManyi=>I使用上面的Concat方法:

var MCS_DocumentFields = headerItems.SelectMany(i => i)
                            .Concat(drawItem)
                            .Concat(bodyItems.SelectMany(i => i))
                            .Concat(footerItems)
                            .ToList();

我强烈建议不要使用ToList。改为使用一个可计算的。每个.ToList循环集合,使用一个numerable只能循环一次。

headerItems有groupby,所以集合的类型不同。谢谢,我刚刚为所有集合添加了groupby。它不会破坏任何逻辑。为所有项目添加groupby将修复此问题。但是,如果它只用于某些项目,它将打破HeaderItems具有groupby,因此集合的类型不同。谢谢,我刚刚为所有项目添加了groupby。它不会破坏任何逻辑。为所有项目添加groupby将修复此问题。但是,如果它只是为某些项目,它将打破