使用 C# 和 Lambda,如何从嵌套列表 <> 的 属性 中获取不同的列表?
Using C# and Lambda, how to get a distinct list from a property of a nested List<>?
我有一个包含另一个对象列表<> 的对象列表<>,我正试图从嵌套列表<> 对象的 属性 中获取不同的值列表。有干净的 Lambda 方法吗?
class Order
{
public List<Product> Products { get; set; }
}
class Product
{
public string ID { get; set; }
}
// create a list of all orders from today.
List<Order> orders = GetOrders(DateTime.Now);
// i know this is way wrong, but hopefully expresses what I'm trying to do.
List<string> productIds = orders.Products.Distinct(x => x.ID).ToList();
您必须使用 SelectMany。我认为这对你有用。
List<string> productIds = orders.SelectMany(o => o.Products).Select(p => p.ID).Distinct();
我有一个包含另一个对象列表<> 的对象列表<>,我正试图从嵌套列表<> 对象的 属性 中获取不同的值列表。有干净的 Lambda 方法吗?
class Order
{
public List<Product> Products { get; set; }
}
class Product
{
public string ID { get; set; }
}
// create a list of all orders from today.
List<Order> orders = GetOrders(DateTime.Now);
// i know this is way wrong, but hopefully expresses what I'm trying to do.
List<string> productIds = orders.Products.Distinct(x => x.ID).ToList();
您必须使用 SelectMany。我认为这对你有用。
List<string> productIds = orders.SelectMany(o => o.Products).Select(p => p.ID).Distinct();