C# 如何在Linq查询中聚合字符串列表?
我需要最终使MVC表中的一列具有OrderNumber字符串。我似乎不明白为什么要收集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
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)
这大大降低了效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新的字符缓冲区,并在缓冲区之间一次又一次地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。这会大大降低效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新的字符缓冲区,并在缓冲区之间一遍又一遍地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。这会大大降低效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新的字符缓冲区,并在缓冲区之间一遍又一遍地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。这大大降低了效率,因为它会导致创建大量中间字符串,从而耗费大量时间分配新字符缓冲区,并在缓冲区之间一遍又一遍地复制相同的数据。我不知道效率有这么低,感谢您指出这一点。