集合的自定义排序
问题描述:
我有对象的集合。我需要用困难的条件对它进行排序,使用许多属性和计算。我的解决方案是定义对象特殊的int
属性,返回值,即OrderBy
肩负。这个解决方案不够好。
对于例如,收集应首先由State
属性排序,那么如果State = 1
,通过Value1
属性,如果State = 2
,通过Value2
物业等。
建议,请解决一些问题。集合的自定义排序
答
您可以通过使用OrderBy第一个严格的标准和使用ThenBy后链接的其他标准命令由多个条件的集合。
你的第一个准则是简单地按照国有财产命令。你的第二个标准取决于国家财产;假设值1,值等有相同的类型,你可以使用一个switch
语句来选择合适的值:
IEnumerable<MyClass> result = items
.OrderBy(item => item.State)
.ThenBy(item =>
{
switch (item.State)
{
case 1: return item.Value1;
case 2: return item.Value2;
}
throw new Exception();
});
@Baszz,感谢您的建议,但哪里有可能误解?我提供了一个小例子,我必须处理,并且已经有3个令人满意的答案。 –
好的,我删除它并再次提高。 –