小编Ced*_*icB的帖子

在C#中,如何在列表中间"最大"值的列表中订购项目

我有一段时间难过这个.我想获取一个列表并订购列表,以便最大价格的产品最终位于列表中间.而且我也想做相反的事情,即确保价格最高的项目最终在列表的外边界上.

想象一下像这样的数据结构.. 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)

c# linq list

12
推荐指数
2
解决办法
1979
查看次数

这两个linq表达式在功能上是等价的吗?

是否有任何功能差异:

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)

如果是这样,是否有更令人信服的理由使用一个而不是另一个?

c# linq

7
推荐指数
1
解决办法
168
查看次数

标签 统计

c# ×2

linq ×2

list ×1