2016-03-11 3 views
1

У меня возникли проблемы с выяснением способа правильной работы. У меня есть список целых чисел .., и эти целые числа являются подсчетом для строк в моем списке строк.Список сортировки <int> по заказу Список <string>

Я использую помощник диаграммы MVC, и моя проблема в том, что мои yValues не совпадают с моими xValues.

Например, в моем List<string> хранятся значения: "Beginner", "MOTR", "Advanced". Я использую этот список, чтобы заказать список ниже.

И моя база данных содержит кучу записей, и каждая запись является либо "Beginner", "MOTR", либо "Advanced". поэтому у меня есть цикл foreach для сбора счета для каждого из этих уровней, поэтому он может быть динамическим. Но когда цикл foreach выполняется, он помещает уровни в алфавитном порядке.

У меня есть класс, называемый Rank, который имеет свойство для уровня (для частичных целей просмотра)

Вот что у меня есть:

List<string>lstLevelsInOrder = new List<string> {"Beginner", "MOTR", "Advanced"}; 

List<int> emptyListIntegers = new List<int>(); 
List<string> lstLevels = database.testdb.Where(x => x.deleted == false).Select(x => x.Level).Distinct().ToList(); 

foreach(var item in lstLevels) 
{ 
    Rank rank = new Rank(); 
    rank.level = item; 
    emptyListIntegers.Add(database.testdb.Where(x => x.Level == rank.level && x.deleted == false).Count()); 
} 

var key = new Chart(width: 800, height: 800, theme: ChartTheme.Blue) 
    .SetXAxis() 
    .SetYAxis() 
    .AddTitle() 
    .AddSeries(
    xValue: lstLevelsInOrder, 
    yValues: emptyListIntegers 
    ); 

return File(key.ToWebImage().GetBytes(), "image/jpeg"); 

Так ради всего в аргументе допустят, что граф для начинающих 10, MOTR 20, и расширенного 5.

Когда этот цикл Еогеаспа выполняет emptyListIntegers будет заполняться в 5, 10, 20 (за счет алфавитного порядка)

поэтому, когда я вижу свою диаграмму, ось х представляет собой «Начальный» с y-значением 5, «MOTR» с y-значением 10, «Дополнительно» с y-значением 20.

Как сортировать мой emptyListIntegers на основе lstLevelsInOrder?

ответ

5

Вы должны заказать по соответствующему индексу string в другом списке:

List<string> lstLevels = database.testdb 
    .Where(x => ! x.deleted) 
    .AsEnumerable() // force Linq-To-Objects 
    .OrderBy(x => lstLevelsInOrder.IndexOf(x.Level)) 
    .Select(x => x.Level) 
    .Distinct() 
    .ToList(); 
+0

, когда я пытаюсь это, я получаю в .OrderBy и .IndexOf и когда я пытаюсь поставить x.Level I я не могу. Я не могу увидеть свои имена свойств .. Я получаю все методы .. но нет имен свойств –

+0

@BviLLe_Kid: конечно, вы выбираете строки перед отдельными, я исправил свой ответ сейчас –

+0

получил его сейчас ха-ха вы качаете человека! Спасибо большое! –

Смежные вопросы