C# 使用C从同一类型的多个不同列表中创建一个列表
我正在开发一个asp.NETMVC3应用程序。我正在使用LINQ从数据库中获取数据: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
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将修复此问题。但是,如果它只是为某些项目,它将打破