-1
public List<Order> GetGrainOrders()
{
    var orders = GetOrdersJson();
    orders = orders.Select(o => o)
                   .Where(o => o.LineItems.Any(i => i.Sku.Contains("GRNS")))
                   .ToList();
    orders.ForEach(o => o.LineItems.RemoveAll(i => !i.Sku.Contains("GRNS")));
    return orders;
}

你能帮我简化这些 linq 查询吗?

干杯

4

3 回答 3

0

这更简单并且可能更有效:

public List<Order> GetGrainOrders() {
    return GetOrdersJson()
            .Select(o => {
                o.LineItems = order.LineItems.Where(i => i.Sku.Contains("GRNS")));
                return o;
            })
            .Where(o => o.LineItems.Count() != 0)
            .ToList();
}
于 2021-10-05T13:59:04.843 回答
-1

可能会有一些微小的变化,至少可以删除一些代码......并不是说它一定“更简单”。

public List<Order> GetGrainOrders()
{
    var orders = GetOrdersJson()
      .Where(o=>o.LineItems.Any(i=>i.Sku.Contains("GRNS")))
      .ToList();
    orders.ForEach(o => o.LineItems.RemoveAll(i => !i.Sku.Contains("GRNS")));
    return orders;
}
于 2021-10-05T12:29:07.820 回答
-1

我会在您的 select 子句中添加 LineItems。

var orders = GetOrdersJson();
orders = orders.Select(o => new Order
{
    // Assign the other fields you need from Order here
    LineItems = o.LineItems.Where(i => i.Sku.Contains("GRNS")).ToList()
})
    .Where(o => o.LineItems.Any(i => i.Sku.Contains("GRNS")))
    .ToList();

return orders;
于 2021-10-05T12:40:27.690 回答