How can I sort a list of objects by a member of each object?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 | class candle { public DateTime date { get; set; } public double open { get; set; } public double high { get; set; } public double low { get; set; } public double close { get; set; } } List<candle> candleList = new List<candle>(); |
假设我在烛光上加了许多蜡烛,我怎么能按日期对烛光进行排序呢?
另外,如何从烛光列表中删除所有重复条目?
谢谢你
相当标准,简单的LINQ。
1 | var candleList = candleList.Distinct().OrderBy(x => x.date).ToList(); |
正如下面所提到的,这只会删除列表中的重复实例,而不是所有属性值相同的实例。
您可以实现自己的
您可能需要查看msdn,并阅读Linq和Enumerable方法:msdn-可枚举方法
如果您使用的是.NET 3.5及更高版本,则可以在ilist上使用orderby扩展,如下所示:
1 | var orderList = candleList.OrderBy(s => s.date); |
或者,您可以使用sortby
1 | var orderList = candleList.SortBy((x, y) => x.date.CompareTo(y.date) ); |
要删除重复项,可以执行以下操作:
1 | var distinctList = orderList.GroupBy(x => x.date).Select(grp => grp.First()); |
最后要再次获得列表吗?
1 | var finalList = distinctList.ToList(); |
以流利的方式:
1 | List<candle> finalList = candleList.OrderBy(s => s.date).Distinct().ToList(); |
顺便说一下,stackoverflow中还有很多其他的问题可以解释这些问题,搜索它们,你会发现其他的细节。
How can I then sort candleList by date?
1 | var orderedList = candleList.OrderBy(p=>p.date); |
Also, how can I remove all duplicate entries from candleList?
您应该告诉我们如何比较两个
1 | var uniqueList = candleList.GroupBy(p=>p.date).Where(p=>p.Count() == 1).ToList(); |
此外,还可以使用