我有一对多的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;
}
答案 0 :(得分:4)
order.Product.OrderBy(p => p.SequenceNumber);
答案 1 :(得分:4)
当我读到你的问题时,你的查询返回IEnumerable&lt; Order&gt;你想在SequenceNumber上对它们进行排序。
为了对某些内容进行排序,它必须具有一个值。有多个SequenceNumber,因为有多个产品。您需要决定如何选择要排序的数字。
假设您要对该订单上产品的最大SequenceNumber排序。然后查询可以是:
from order in orders
orderby order.Products.Max(p=>p.SequenceNumber)
select order;
答案 2 :(得分:2)
在Order
内,只需执行
Products = Products.OrderBy(o => o.SequenceNumber);
Sort()
中还有一个List<T>
方法可以直接对列表进行排序。
答案 3 :(得分:2)
如果您想“就地”对集合进行排序,请致电
Products.Sort((lhs, rhs) => lhs.SequenceNumber.CompareTo(rhs.SequenceNumber));
如果要“按需”对集合进行排序,只需使用LINQ:
foreach (var product in order.Products.OrderBy(x => x.SequenceNumber)) {
}