我无法找到使其正常工作的方法。我有一个整数列表..这些整数是我的字符串列表中字符串的计数。
我正在使用MVC图表帮助器,我的问题是我的yValues
没有与我的xValues
正确对齐。
例如,我的List<string>
包含以下值:"Beginner"
,"MOTR"
,"Advanced"
。我使用此列表来订购下面的列表。
我的数据库包含大量记录,每条记录都是"Beginner"
,"MOTR"
或"Advanced"
。所以我有一个foreach循环来收集每个级别的计数,所以它可以是动态的。但是当foreach循环执行时,它将Levels按字母顺序排列。
我还有一个名为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。
当该foreach循环执行时,emptyListIntegers
将被填充为5,10,20(由于字母顺序)
所以,当我看到我的图表时,x轴是&#34;初学者&#34; y值为5,&#34; MOTR&#34; y值为10,&#34;高级&#34; y值为20。
如何根据emptyListIntegers
对<{1}}进行排序?
答案 0 :(得分: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();