How to select top N rows in a Linq GroupBy

前端 未结 2 716
借酒劲吻你
借酒劲吻你 2021-02-19 08:39

hope you can help me out here. I have a list of Bookings where I would like to get the top 2 rows in each group of TourOperators.

here\'s a sample of the data:

2条回答
  •  余生分开走
    2021-02-19 08:57

    Replace First() with Take(2) and use SelectMany():

    List yetAnotherList = 
                     list.GroupBy(row => row.TourOperator)
                         .SelectMany(g => g.OrderBy(row => row.DepDate).Take(2)) 
                         .ToList();
    

    Update: Forgot the SelectMany the first time. You want to flatten the result (which SelectMany does), otherwise you get a list of IEnumerables.

提交回复
热议问题