簡體   English   中英

使用Linq對集合內的集合進行排序

[英]Sort collection within collection using Linq

我有一對多的Linq查詢,我想對“很多”集合中的屬性進行排序。 例如,在下面的偽代碼中,我從Linq查詢返回一個List,但我想根據Product類的SequenceNumber屬性對Products屬性進行排序/排序。 我怎樣才能做到這一點? 任何信息表示贊賞。 謝謝。

public class Order
{
   public int OrderId;
   public List<Product> Products;
}

public class Product
{
   public string name;
   public int SequenceNumber;
}
order.Product.OrderBy(p => p.SequenceNumber);

當我讀到你的問題時,你的查詢返回IEnumerable <Order>,你想在SequenceNumber上對它們進行排序。

為了對某些東西進行排序,它必須有一個值。 有多個SequenceNumber,因為有多個產品。 您需要決定如何選擇要排序的數字。

假設您要對該訂單上產品的最大SequenceNumber排序。 然后查詢可以是:

from order in orders
orderby order.Products.Max(p=>p.SequenceNumber)
select order;

Order ,簡單地做

Products = Products.OrderBy(o => o.SequenceNumber);

List<T>還有一個Sort()方法可以直接對列表進行排序。

如果要“就地”對集合進行排序,只需調用即可

Products.Sort((lhs, rhs) => lhs.SequenceNumber.CompareTo(rhs.SequenceNumber));

如果要“按需”對集合進行排序,只需使用LINQ:

foreach (var product in order.Products.OrderBy(x => x.SequenceNumber)) {
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM