构造具有优先级项的排序列表

时间:2010-10-17 15:49:26

标签: c# linq

我有一个新闻未分类的项目列表,其中一些有优先级标志。我需要优先级项浮动到列表顶部,然后按日期对其余项进行排序。

因此,最终结果是一个新闻项目列表,其中优先项目显示在顶部,其余部分按日期排序。

必须有一个比这更好的方法,但我不确定最好的方法是什么 -

foreach (var newsItem in newsItems)
{
    if (newsItem.isPriority)
    {
        addToPriorityList(newsItem);
    }
    else
    {
        addToOtherList(newsItem);
    }
}

foreach (var priorityItem in priorityList)
{
    addtoMainList(priorityItem);
}

OtherList.SortbyDate();
foreach (var otherItem in otherList)
{
    addtoMainList(otherItem);
}

有没有更优雅的方法来解决这个问题?我假设我可以使用LINQ,但我对它很新,所以我对语法不满意。

2 个答案:

答案 0 :(得分:3)

试试这个:(根据第1条评论中的建议编辑)

var sorteditems = newsItems.OrderByDescending(item => item.IsPriority)
                           .ThenBy(item => item.Date);

答案 1 :(得分:2)

你应该可以这样做:

newsItems.OrderBy(item => item.Priority).ThenBy(item => item.Date);