我有以下两个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
我想返回 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/