2015-04-21 5 views
1

Я не могу понять, почему этот код не будет заказывать мой список данных по имени строки.Linq Order By String Не работает

public class GroupedRow 
{ 
    public int id { get; set; } 
    public string label { get; set; } 
    public decimal SumOfDays { get; set; } 
} 

var data = _dataService.GetData(); 

List<GroupedRow> result = data 
    .GroupBy(l => l.listItemID.Value) 
    .Select(cl => new GroupedRow 
    { 
     label = cl.First().ListItem.description, 
     SumOfDays = cl.Sum(c => c.timeAssigned.Value)/8.0m 
    }).ToList(); 

result.OrderByDescending(x => x.label).ToList(); 

Я пытаюсь заказать список по метке, который является строкой, однако он никогда не работает.

Может ли кто-нибудь увидеть, что я делаю неправильно?

Заранее спасибо.

ответ

4

Вы заказываете список и создаете новый список, используя ToList(), но вы не назначаете возвращаемое значение никому, чтобы вы его потеряли. Eiter исправить это:

result = result.OrderByDescending(x => x.label).ToList(); 

или

List<GroupedRow> result = data 
    .GroupBy(l => l.listItemID.Value) 
    .Select(cl => new GroupedRow 
    { 
     label = cl.First().ListItem.description, 
     SumOfDays = cl.Sum(c => c.timeAssigned.Value)/8.0m 
    }) 
    .OrderByDescending(x => x.label) 
    .ToList();