我有一个product对象列表
List<Product> products = new
List<Product>()
{
new Product{ Name= "A", Code =1, TimeStamp= DateTime.Parse("26/06/2014 8:01") },
new Product{ Name= "B", Code =2, TimeStamp= DateTime.Parse("26/06/2014 8:02") },
new Product{ Name= "A", Code =1, TimeStamp= DateTime.Parse("26/06/2014 8:04") },
new Product{ Name= "C", Code =5, TimeStamp= DateTime.Parse("26/06/2014 8:07") }
};
Run Code Online (Sandbox Code Playgroud)
我想得到一个具有最新时间值的产品列表,所以预期的输出是 -
Distinct Products
Name Code TimeStamp
A 1 8:04
B 2 8:02
C 5 8:07
Run Code Online (Sandbox Code Playgroud)
我试过.GroupBy()但没有工作,任何想法?
使用GroupBy是正确的方法 - 订购您的组,并采取第一项,如下所示:
var res = products
.GroupBy(p => p.Name)
.Select(g => g.OrderByDescending(p => p. TimeStamp).First())
.ToList();
Run Code Online (Sandbox Code Playgroud)
我们的想法是按时间戳按降序对每个组进行排序,然后从排序的子列表中获取第一个项目.
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |