[英]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.