排行。 Linq 到 sql 问题

发布于 2024-09-06 18:42:40 字数 390 浏览 1 评论 0原文

我有一个由人员发出的订单表:

Orders
{ 
  Guid  PersonId, 
  int   Priority, 
  Guid  GoodId 
}

优先级是某个整数。例如:

AlenId   1  CarId
DianaId  0  HouseId
AlenId   3  FoodId
DianaId  2  FlowerId

我想检索每个人的最高优先级顺序:

AlenId   1  CarId
DianaId  0  HouseId

在 T-SQL 中我将使用排名,如何在 Linq-2-Sql 中获得相同的结果?

先感谢您!

I have a table of orders made by persons:

Orders
{ 
  Guid  PersonId, 
  int   Priority, 
  Guid  GoodId 
}

Priority is some integer number. For example:

AlenId   1  CarId
DianaId  0  HouseId
AlenId   3  FoodId
DianaId  2  FlowerId

I want to retrieve highest priority orders for each person:

AlenId   1  CarId
DianaId  0  HouseId

In T-SQL I'll use ranking, how can I get the same result in Linq-2-Sql ?

Thank you in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜是你 2024-09-13 18:42:40

像这样的事情:

var query = from order in context.Orders
            orderby order.Priority
            group order by order.PersonId into personOrders
            select personOrders.First();

相信应该有效,但我不知道它在分组后排序方面的定义有多明确。这也可以工作,尽管它有点难看:

var query = from order in context.Orders
            group order by order.PersonId into personOrders
            select personOrders.OrderBy(order => order.Priority).First();

或者只使用点表示法:

var query = context.Orders
                   .GroupBy(order => order.PersonId)
                   .Select(group => group.OrderBy(order => order.Priority)
                                         .First());

Something like this:

var query = from order in context.Orders
            orderby order.Priority
            group order by order.PersonId into personOrders
            select personOrders.First();

I believe that should work, but I don't know how well-defined it is, in terms of the ordering post-grouping. This would also work, although it's slightly uglier:

var query = from order in context.Orders
            group order by order.PersonId into personOrders
            select personOrders.OrderBy(order => order.Priority).First();

Or using just dot notation:

var query = context.Orders
                   .GroupBy(order => order.PersonId)
                   .Select(group => group.OrderBy(order => order.Priority)
                                         .First());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文