选择列表中的最低元素

时间:2019-01-06 18:02:58

标签: c# string linq int min

我想根据大小选择媒体,但是似乎无法弄清楚如何以一种明智的方式选择内存消耗最少的媒体。

内存使用情况存储在Size字段中。

using System;
using System.Collections.Generic;

struct placeholder
{
    string size;

    public placeholder(string input)
    {
        this.size = input;
    }
}

public class Program
{
    public static void Main()
    {
        List<placeholder> list = new List<placeholder>();
        list.Add(new placeholder("1"));
        list.Add(new placeholder("2"));
        list.Add(new placeholder("3"));
        list.Add(new placeholder("4"));

        // How to find the entry in list with lowest placeholder.size?
        Console.WriteLine("Hello World");
    }
}

但是如何选择内存最少的那个,大小存储为字符串呢?

我可以在for循环中执行此操作,但是有没有更聪明的东西?

3 个答案:

答案 0 :(得分:3)

没有比列表更聪明的了。期间。

这是一个列表-它没有关于特殊条件的内在魔术知识,因此要找到与特定条件(最低内存)相匹配的元素,必须仔细检查所有元素并对其进行评估。句点-内在的基本逻辑,在这里没有什么聪明的。

获取每个元素,将大小与存储的大小进行比较,以获取最小元素的大小,并替换最小的元素(并定义最小元素的大小)。

答案 1 :(得分:2)

无论采用哪种解决方案,您都无法避免整个列表中的每个元素“访问” ,因为要获得最小项,您需要将其与其他项进行比较。

>

您可以通过Linq Aggregate获得结果:

var min = list.Aggregate((l, r) => int.Parse(l.size) > int.Parse(r.size) ? r : l);

或使用典型的for循环。

答案 2 :(得分:0)

此问题的典型解决方案是对列表进行排序,然后根据您的排序算法采用第一项或最后一项。