如何在C# LINQ查询中限制返回行数?替代select top10/limit10的方法
在LINQ中实现类似SELECT TOP 10/LIMIT 10的效果
你可以直接使用LINQ的Take(10)方法来获取排序后的前10条数据,注意要把这个方法放在排序之后、ToList()之前,这样才能确保取到的是按日期降序排列后的前10项。
修改后的完整代码如下:
List<Item> result = items.GroupBy(x => x.ItemNo) .Select(x => new Item { ItemNo = x.Key, ItemName = x.FirstOrDefault(y => y.Key == "ItemName")?.Value, Date = x.FirstOrDefault(y => y.Key == "Date")?.Value }) .OrderByDescending(y => y.Date) // 注意原代码的y.date应为y.Date,保持属性名大小写一致 .Take(10) // 新增Take(10)获取前10条数据 .ToList();
补充说明:
Take(n)方法会返回序列中的前n个元素,如果序列本身元素数量不足n,会直接返回所有现有元素,不会抛出异常。- 务必确保
Take在排序之后执行,否则取到的是未排序的前10条,不符合你的需求。
内容的提问来源于stack exchange,提问作者Sarahrb
相关产品推荐
相关产品推荐

