c# - LINQ 到实体 : How to return the latest order number for a customer

标签 c# linq linq-to-entities

假设我们有典型的 CustomersOrders 关系,其中一个 Customer 可以有多个 Orders,并且Orders 包含作为 FK 的 CustomerId

我认为这段代码返回最新订单的整个订单实体:

    Order latestOrder = (from o in context.Orders 
                         //where conditions or joins to be included here                                                    
                         group o by o.CustomerId into grp
                         select grp.OrderByDescending(g => g.OrderDate).First())

如何只返回类型为 stringOrderNumber,而不是整个实体? (如果没有则为空)

    string latestOrderNumber = (?)

谢谢。

最佳答案

您需要调用Select(g => g.OrderNumber)之前First()你需要调用FirstOrDefault再次为了检索单个 OrderNumber而不是 IQueryable<string>

string latestOrderNumber = (from o in context.Orders 
                            group o by o.CustomerId into grp
                            select grp.OrderByDescending(g => g.OrderDate)
                                     .Select(g => g.OrderNumber)
                                     .FirstOrDefault()
                           ).FirstOrDefault();

关于c# - LINQ 到实体 : How to return the latest order number for a customer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32083516/

相关文章:

c# - 如何使用 LINQ-to-Entities 将数据插入到特定表中?

c# - 无法为 SSL/TLS C# Web 服务客户端建立安全通道

C# Linq groupby 方法语法

c# - 我应该在 MVC 范例中将用户数据保存在哪里,以便可以在各个级别访问它?

c# - 如何在 C# 中使用 trim() 来消除更多空格?

c# - LINQ 语句需要 Linq 通配符和 NOT 条件

c# - 跨多层次关系的 Entity Framework 查询

linq - 使用 linq toEntity 获取新添加记录的 ID

c# - 如何通过 app.config 或 web.config 或其他方式全局指定 DataContractSerializer EmitDefaultValue = false?

c# - 折叠区域中的代码片段