Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 如何在C语言中从数组中获取最短的国家名称#_Linq_C# 4.0 - Fatal编程技术网

Linq 如何在C语言中从数组中获取最短的国家名称#

Linq 如何在C语言中从数组中获取最短的国家名称#,linq,c#-4.0,Linq,C# 4.0,下面的程序给出了字符串数组中最短的国家/地区字符数。如何使用Linq同时检索最短的国家名称?所以我想在查找最短国家字符数的同时检索英国名称 class Program { static void Main() { string[] countries = { "India", "USA", "UK" }; var minCount = countries.Min(x => x.Length); var maxCount =

下面的程序给出了字符串数组中最短的国家/地区字符数。如何使用Linq同时检索最短的国家名称?所以我想在查找最短国家字符数的同时检索英国名称

class Program
{
    static void Main()
    {
        string[] countries = { "India", "USA", "UK" };

        var minCount = countries.Min(x => x.Length);
        var maxCount = countries.Max(x => x.Length);

        Console.WriteLine
            ("The shortest country name has {0} characters in its name", minCount);
        Console.WriteLine
            ("The longest country name has {0} characters in its name", maxCount);
    }
}

只需按名称长度排序所有国家,然后选择第一个(最短)和最后一个(最长):


只需按名称长度排序所有国家,然后选择第一个(最短)和最后一个(最长):


一种简单的方法是按名称对数组进行排序
长度

  string[] countries = { "India", "USA", "UK" };
  var shortestCountry= countries.OrderBy(s=>s.Length).First();
有了
shortcountry
,您就拥有了所需的两样东西

另一种方法是使用扩展方法:

string[] countries = { "India", "USA", "UK" };
var shortestCountry = chrs2.Aggregate((seed, e) => seed.Length < e.Length ? seed :  e);
string[]国家={“印度”、“美国”、“英国”};
var shortestCountry=chrs2.聚合((种子,e)=>种子长度
一种简单的方法是按名称对数组进行排序
长度

  string[] countries = { "India", "USA", "UK" };
  var shortestCountry= countries.OrderBy(s=>s.Length).First();
有了
shortcountry
,您就拥有了所需的两样东西

另一种方法是使用扩展方法:

string[] countries = { "India", "USA", "UK" };
var shortestCountry = chrs2.Aggregate((seed, e) => seed.Length < e.Length ? seed :  e);
string[]国家={“印度”、“美国”、“英国”};
var shortestCountry=chrs2.聚合((种子,e)=>种子长度
我知道这个问题已经有了一个公认的答案,对于给定的具体示例来说,这个答案非常合适,但是任何其他阅读此问题的人都应该记住,它的伸缩性并没有达到应有的程度。OrderBy导致数据集的有序排序,该排序以O(n log n)的形式执行,而这个问题可以通过对数据集的单次传递来解决,从而产生O(n)的执行顺序。我建议下载库(也可以通过NuGet获得),它提供了
MinBy
扩展来实现这一点


或者,你可以像octaviocci已经指出的那样,用O(n)来计算聚合。

我知道这个问题已经有了一个公认的答案,这个答案对于给定的具体例子来说是完全足够的,但是任何读到这篇文章的人都应该记住,它的伸缩性并没有达到应有的程度。OrderBy导致数据集的有序排序,该排序以O(n log n)的形式执行,而这个问题可以通过对数据集的单次传递来解决,从而产生O(n)的执行顺序。我建议下载库(也可以通过NuGet获得),它提供了
MinBy
扩展来实现这一点

或者,正如octaviocci已经指出的那样,您可以使用聚合在O(n)中进行自己的操作