我有一段时间难过这个.我想获取一个列表并订购列表,以便最大价格的产品最终位于列表中间.而且我也想做相反的事情,即确保价格最高的项目最终在列表的外边界上.
想象一下像这样的数据结构.. 1,2,3,4,5,6,7,8,9,10
在第一个场景中,我需要回到1,3,5,7,9,10,8,6,4,2在第二个场景中,我需要回到10,8,6,4,2,1,3 ,5,7,9
该列表可能有超过250个项目,数字将不会均匀分布,并且它们不会是连续的,我想尽量减少复制.数字将包含在Product对象中,而不是简单的原始整数.
是否有一个我没有看到的简单解决方案?
有什么想法吗.
所以对于那些想知道我在做什么的人,我根据计算出的字体大小来订购商品.这是我去的代码......
实施......
private void Reorder()
{
var tempList = new LinkedList<DisplayTag>();
bool even = true;
foreach (var tag in this) {
if (even)
tempList.AddLast(tag);
else
tempList.AddFirst(tag);
even = !even;
}
this.Clear();
this.AddRange(tempList);
}
Run Code Online (Sandbox Code Playgroud)
考试...
[TestCase(DisplayTagOrder.SmallestToLargest, Result=new[]{10,14,18,22,26,30})]
[TestCase(DisplayTagOrder.LargestToSmallest, Result=new[]{30,26,22,18,14,10})]
[TestCase(DisplayTagOrder.LargestInTheMiddle, Result = new[] { 10, 18, 26, 30, 22, 14 })]
[TestCase(DisplayTagOrder.LargestOnTheEnds, Result = new[] { 30, 22, 14, 10, 18, 26 })]
public int[] CalculateFontSize_Orders_Tags_Appropriately(DisplayTagOrder sortOrder)
{
list.CloudOrder = sortOrder;
list.CalculateFontSize();
var …Run Code Online (Sandbox Code Playgroud) 是否有任何功能差异:
if (photos.Any(it => it.Archived))
Run Code Online (Sandbox Code Playgroud)
和
if (photos.Where(it => it.Archived).Any())
Run Code Online (Sandbox Code Playgroud)
如果是这样,是否有更令人信服的理由使用一个而不是另一个?