我正在使用IEnumerable orderby以升序格式对项目进行排序,但它不起作用我的查询是这样的:
IEnumerable<Step> steps = allsteps.Where(step => step.X <= Y);
steps = steps.OrderBy(step => step.X);
不使用OrderBy或OrderByDescending
为什么?
我想使用Sum()
方法来总结一些项目和项目订单很重要(有一些规则)
我在MSDN中读到应该枚举的工作,但是有什么好办法(我没试过)。
编辑:X
和Y
属于double
类型。
我快速观察了我的第一项步骤(steps.First())。
答案 0 :(得分:8)
首先,为什么不把它放在一条线上。
var steps = allsteps.Where(step => step.X <= Y).OrderBy(step => step.X);
正如“vc 74”在他的评论中指出的那样,如果X
不是原始的,或者没有实现IComparable
或IComparable<TypeOfX>
,那么你将无法订购您的清单,无论是否有LINQ。
答案 1 :(得分:3)
这只是按预期工作:
// Create some random double values from 0 - 100
var values = Enumerable.Repeat(new Random(), int.MaxValue)
.Select(r => r.NextDouble() * 100);
//Create an enumeration with ten elements
var pointList = values.Take(10)
//Cause of lacking support of IEnumerable.Zip() or .Pairwise()
//use this approach to create something with the properties X and Y
.Select(n => new PointF((float)n, (float)values.First()));
//Sort the elements
var sortedPoints = pointList.OrderBy(point => point.X);
//Output to console
foreach (var point in sortedPoints)
{
Console.WriteLine(point.ToString());
}
答案 2 :(得分:3)
与此问题非常相似:
IEnumerable<Article> articles = StepThree.ReturnArticles(iUserID);
lvPending.DataSource = articles;
lvPending.DataBind();
想要改变结果然后绑定到我的列表视图的顺序,所以我尝试了这个:
lvPending.DataSource = articles.OrderByDescending(a=> a.DateCreated);
已执行,但未更新我的结果。所以我进一步发现,因为我正在返回一个复杂类型,linq不能为我订购它,所以我不得不在StepThree.cs文件中添加orderby下降,其中调用ReturnArticles方法。