我遇到了问题,我无法解决。看看我的代码。
CustomerProductivity.Add(new ChartDataViewModel
{
Series = new List<string> { "Sales" },
ChartType = "bar",
Data = SalesStatistics
.GroupBy(b => b.CustomerName)
.Select(g => new ChartDataElement()
{
X = g.Key,
Y = new List<int>() { (int)g.Sum(b => b.Sales) }
}).OrderByDescending(f=> f.Y).Take(3).ToList(),
ChartConfig = config
});
场景是我希望获得销量最高的前三大客户。但它给我一个错误,因为“至少有一个对象必须实现IComparable”。令人惊讶的是,我尝试按客户名称订购并且工作正常,但如果按销售订单则不行。
答案 0 :(得分:0)
由于@leppie提到您按List
订购,而您的程序不知道如何比较这2个列表。
List<int> > List<int> // How i compare this? by Count? by elements? what property of elements? and so one
我看到您的列表中只有只有1个元素。基于此,您可以通过列表中的.First()
(且仅限)元素进行排序。
CustomerProductivity.Add(new ChartDataViewModel
{
Series = new List<string> { "Sales" },
ChartType = "bar",
Data = SalesStatistics
.GroupBy(b => b.CustomerName)
.Select(g => new ChartDataElement()
{
X = g.Key,
Y = new List<int>() { (int)g.Sum(b => b.Sales) }
}).OrderByDescending(f=> f.Y.First()).Take(3).ToList(),
ChartConfig = config
});
答案 1 :(得分:0)
我怀疑为什么我们需要一个列表来保存单个值,不应该
<pre>
Y = new List<int>() { (int)g.Sum(b => b.Sales) }
</pre>
should be
<pre>
Y = (int)g.Sum(b => b.Sales) \\\\ as the sum will a int.
</pre>
如果我是正确的,那么改变这一行将纠正错误。