gpt4 book ai didi

c# - Linq 查询从嵌套对象中获取值

转载 作者:行者123 更新时间:2023-11-30 23:18:32 25 4
gpt4 key购买 nike

我需要在不使用 foreach 循环的情况下从嵌套对象中提取特定值。我认为这里正确的方法是 linq 查询,但我无法获取我需要的值。考虑类结构:

public class Order
{
public int OrderID { get; set; }
public List<OrderItems> { get; set; }
}

public class OrderItems
{
public int OrderItemID { get; set; }
public string ItemName { get; set; }
public int Quantity { get; set; }
public List<OrderItemShipping> OrderItemShippings { get; set; }
}

public class OrderItemShipping
{
public int OrderItemShippingID { get; set; }
public Address ShipAddress { get; set; }


public class Address
{
public int AddressID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
}

我希望能够做这样的事情:

 var shipToAddress = Order.OrderItems.OrderItemShipping.FirstOrDefault(x => x.Address.Address1);

但我的语法肯定不正确,因为我无法获取我需要的值?

最佳答案

如果您需要访问(嵌套)集合的项目,SelectMany 是您的 friend :

var shipToAddress = Order.OrderItems
.SelectMany(oi => oi.OrderItemShipping.Select(ois => ois.ShipAddress.Address1)))
.FirstOrDefault();

您的语法错误,因为 FirstOrDefault 的重载需要一个谓词(因此返回一个 bool 的函数)但您传递的是:FirstOrDefault(x = > x.Address.Address1)

如果您需要以某种方式过滤它(“来自嵌套对象的特定值”),您需要更准确地解释您的要求。

关于c# - Linq 查询从嵌套对象中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40848646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com