gpt4 book ai didi

c# - 使用 Linq 获取每个客户昨天下的最后一个订单

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:47 25 4
gpt4 key购买 nike

我有以下两个POCO

public class Customers
{
public Guid Id { get; set; }
public string FirstName{ get; set; }
public string LastName{ get; set; }
}

public class Orders
{
public Guid Id { get; set; }
public Guid CustomerId { get; set; }
public string Product { get; set; }
public DateTime Date { get; set; }
}

假设我的数据服务返回一个 List 和 List ,我将如何使用 Linq 获取每个客户昨天下的最后一个订单?

我想返回 Customer.Id、Customer.FirstName、Customer.LastName、Order.Id、Order.Date 和 Order.Product(作为来自 Controller 操作的 Json),所以我还需要创建一个新的 POCO 来保持结果?类似于以下内容:

public class CustomerOrders
{
public Guid CustomerId {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
public Guid OrderId {get;set;}
public DateTime Date {get;set;}
public string Product {get;set;}
}

我之前发布了一个关于使用 Linq 处理列表的类似问题。我还在学习 Linq,这些问题让我有些困惑。我希望有人能提供帮助。

最佳答案

试试这个:

var results = customers
.Select(c =>
orders
.Where(o => o.CustomerId == c.Id)
.Where(o => o.Date.Date == DateTime.Now.AddDays(-1).Date)
.OrderByDescending(o => o.Date)
.Select(o => new CustomerOrders()
{
Product = o.Product,
Date = o.Date,
CustomerId = c.Id,
LastName = c.LastName,
FirstName = c.FirstName,
OrderId = o.Id
})
.First())
.ToList();

这是处理客户没有符合条件的相应订单的情况的另一个版本:

var results = customers
.Select(c =>
orders
.Where(o => o.CustomerId == c.Id)
.Where(o => o.Date.Date == DateTime.Now.AddDays(-1).Date)
.OrderByDescending(o => o.Date)
.DefaultIfEmpty()
.Select(o => new CustomerOrders()
{
Product = o == null ? default(string) : o.Product,
Date = o == null ? default(DateTime) : o.Date,
CustomerId = c.Id,
LastName = c.LastName,
FirstName = c.FirstName,
OrderId = o == null ? default(Guid) : o.Id
})
.First())
.ToList();

关于c# - 使用 Linq 获取每个客户昨天下的最后一个订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33313240/

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