根据List <string>的顺序对List <int>进行排序

Gri*_*zly 1 c# sorting list

我无法找到使其正常工作的方法.我有一个整数列表..这些整数是我的字符串列表中的字符串计数.

我正在使用MVC图表助手,我的问题是我yValues没有正确排队xValues.

例如,我List<string>认为值:"Beginner","MOTR","Advanced".我使用此列表来订购下面的列表.

而我的数据库包含了一系列的记录,每条记录可以是一个"Beginner","MOTR""Advanced".所以我有一个foreach循环来收集每个级别的计数,所以它可以是动态的.但是当foreach循环执行时,它将Levels按字母顺序排列.

我也有一个名为class 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");
Run Code Online (Sandbox Code Playgroud)

所以只是参数的缘故,让我们说初学者的数量是10,MOTR是20,高级是5.

当该foreach循环执行时,emptyListIntegers将填充为5,10,20(由于字母顺序)

所以,当我看到我的图表时,x轴是"初学者",y值为5,"MOTR"的y值为10,"高级",y值为20.

如何emptyListIntegers根据我的排序lstLevelsInOrder

Tim*_*ter 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();
Run Code Online (Sandbox Code Playgroud)