基于实体属性对实体列表进行排序

时间:2013-11-20 03:05:56

标签: c# linq entity-framework-5

我正在使用实体框架并生成一个简单的返回对象列表,例如

RetVal.Add(new Leaderboard() { 
           Category = CategoryID, 
           User = u.FirstName, 
           Score = GetCategoryScoreForUser(u.Username,(int)CategoryID).ToString() });

RetVal是排行榜列表。

每个Leaderboard对象都有一个名为Score的属性,我想要做的是重新命令RetVal,使它现在包含列表,但是按照得分的降序排列。

我尝试了以下内容:

 RetVal.Sort(x => x.Score);

 RetVal.OrderBy(x=>x.Score);

但没有任何改变。

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:3)

如果您将分数存储为数字字符串,请尝试以下操作:

RetVal.OrderByDescending(x=>int.Parse(x.Score));

如果您将其修改为int,请尝试以下操作:

RetVal.OrderByDescending(x=>x.Score);

答案 1 :(得分:1)

创建新列表:

var newList = RetVal.OrderBy(x => x.Score).ToList();

当您在列表上进行迭代时,您不必这样做,只需使用

foreach(var leaderboard in RetVal.OrderBy(x => x.Score)) {
    Console.WriteLine(leaderboard);
}

答案 2 :(得分:0)

如果您想编辑原始数组,请执行以下操作:

RetVal=RetVal.Sort(x => x.Score);

RetVal=RetVal.OrderBy(x=>x.Score);