相关疑难解决方法(0)

如何按C#中的特定字段对对象列表进行排序?

我有这门课:

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)

无需编写大量代码(如果可能),最好的方法是什么?

谢谢

c# sorting

24
推荐指数
3
解决办法
6万
查看次数

LINQ OrderBy具有投影比较器的匿名对象

我一直在尝试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)

c# linq icomparer

8
推荐指数
2
解决办法
2427
查看次数

标签 统计

c# ×2

icomparer ×1

linq ×1

sorting ×1