C# 如何在Linq查询中聚合字符串列表?

C# 如何在Linq查询中聚合字符串列表?,c#,linq,C#,Linq,我需要最终使MVC表中的一列具有OrderNumber字符串。我似乎不明白为什么要收集 public IEnumerable<OrderShippedListModel> GetRecentShippedOrders(string authenticatedUsername) { User currentUser = new User().GetUser(authenticatedUsername); Order (from r in dc.Orders

我需要最终使MVC表中的一列具有OrderNumber字符串。我似乎不明白为什么要收集

public IEnumerable<OrderShippedListModel> GetRecentShippedOrders(string authenticatedUsername)
{
    User currentUser = new User().GetUser(authenticatedUsername);
    Order (from r in dc.Orders
            where r.Location.OrganizationID == currentUser.OrganizationID
            && r.CloseDate != null
            && r.ProductShipDate != null
            orderby r.LastModifiedDate descending
            select new OrderShippedListModel
            {
                ID = r.ID,
                OrderNumbers = r.Processes.Select(p=>p.OrderNumber),  //This needs to aggregate to a string
                Label = r.Label,
                Location = r.Location.Label,
                CreateDate = r.CreateDate,
                ProductShipDate = r.ProductShipDate,
                LastModifiedDate = r.LastModifiedDate,
                CloseDate = r.CloseDate
            }).Take(3);
}
使用:

使用:

使用:

使用:

另一个是聚合:

var s = r.Processes.Aggregate((accum, elem) => accum += elem.OrderNumber)
另一个是聚合:

var s = r.Processes.Aggregate((accum, elem) => accum += elem.OrderNumber)
另一个是聚合:

var s = r.Processes.Aggregate((accum, elem) => accum += elem.OrderNumber)
另一个是聚合:

var s = r.Processes.Aggregate((accum, elem) => accum += elem.OrderNumber)

这大大降低了效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新的字符缓冲区,并在缓冲区之间一次又一次地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。这会大大降低效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新的字符缓冲区,并在缓冲区之间一遍又一遍地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。这会大大降低效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新的字符缓冲区,并在缓冲区之间一遍又一遍地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。这大大降低了效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新字符缓冲区,并在缓冲区之间一遍又一遍地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。