我有以下代码:
var categories = catList.Select(c => new
{
Title = c.Web.Title,
Byline = c[Constants.FieldNames.Byline],
Url = c[SPBuiltInFieldId.FileRef]
});
我总是会有最多三件物品,但可能会少一些。 标题将始终(简化)美国,欧洲或非洲
我需要做的是在将数据绑定添加到转发器之前对它们进行排序,但不按字母顺序排序
我需要显示它们的顺序是
europe
africa
america
我怎样才能做到这一点?
提前感谢。
答案 0 :(得分:1)
您可以按照存储在字典中的标题位置订购商品:
var position = new Dictionary<string, int>
{
{ "Europe", 0 },
{ "Africa", 1 },
{ "America", 2 },
};
var categories = catList.Select(c => new ...);
.OrderBy(x => position[x.Title]);
答案 1 :(得分:0)
您可以通过为每个标题分配相应的订单号来执行此类操作:
var catOrder = new Dictionary<string,int>
{
{ "europe", 1 },
{ "africa", 2 },
{ "america", 3 }
};
var catList = new[] { "america", "europe", "africa" };
var categories =
catList.Select(c => new { Title = c })
.OrderBy(c => catOrder[c.Title]);
// result: europe, africa, america
如果比较更复杂,请创建一个实现IComparer的类,其中包含您的排序逻辑,并将其传递给OrderBy()
。