我有这门课:
public class StatInfo
{
public string contact;
public DateTime date;
public string action;
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个StatInfo列表,但我不确定如何根据日期字段对其进行排序.我应该使用排序方法吗?我应该创建自己的吗?
var _allStatInfo = new List<StatInfo>();
// adding lots of stuff in it
_allStatInfo.SortByDate???
Run Code Online (Sandbox Code Playgroud)
无需编写大量代码(如果可能),最好的方法是什么?
谢谢
我一直在尝试OrderBy
使用LINQ语句来处理匿名对象,但现在已经失败了.
我已经检查了这些:
匿名IComparer实现
C#linq sort - 实例化IComparer的快速方法
如何通过C#中的特定字段对对象数组进行排序?
我花了几个小时尝试不同的方法,但必须有一些我缺少的东西.
假设有以下课程:
public class Product
{
public int Id {get; set;}
public string Name {get; set;}
public int Popularity {get; set;}
public decimal Price {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并且products
是这些对象的列表.
如何完成此LINQ语句,以便它可以与匿名对象一起使用?
要清楚,我知道我可以用不同的方式做到这一点,但我非常有兴趣学习如何使这个特定的例子有效.
var sortedProducts = products
.OrderBy(p =>
new {p.Popularity, p.Price},
[IComparer magic goes here]);
Run Code Online (Sandbox Code Playgroud)
似乎应该可以通过以下方式实现ProjectionComparer
:http:
//code.google.com/p/edulinq/source/browse/src/Edulinq/ProjectionComparer.cs?r = 0c583631b709679831c99df2646fc9adb781b2be
任何想法如何做到这一点?
更新:
我对此进行了快速的性能测试 - 匿名比较器解决方案vs标准orderby.thenby,似乎匿名解决方案相当慢,这可能是我们可能预期的.
numProd | Anon | chained orderby clauses
10 000 | 47 ms …
Run Code Online (Sandbox Code Playgroud)