c#为什么min和max方法不能正常工作

时间:2017-04-25 09:22:15

标签: c# methods max min

获得了.txt文件:

pasaulyje jau nuo XVI a. pradžios. Lorem Ipsu
atsitiktine tvarka išdėliojo raides aaaaaaaaaaaaaa aaaaaaaa aaa
atspaudų prese ir
qqqqqqqqqqqqqqqqqqqqqqqqqqqq

这是我的代码段:

string max = tekstas.Max();
string min = tekstas.Min();

Console.WriteLine(max);
Console.WriteLine(min);

为什么Max()方法给我最后一行(因为它是最短的,实际上不是)和Min()方法给出第二行,这是正确的如果我会问Max方法......所以我做错了什么?

2 个答案:

答案 0 :(得分:2)

如果Length是Min或Max的标准,则可以

var max = tekstas.Max(x => x.Length);
var min = tekstas.Min(x => x.Length);

var maxLengthString = tekstas.Where(x => x.Length == max);
var minLengthString = tekstas.Where(x => x.Length == min);

虽然您可以对其进行一些重构,例如第一次出现,但您需要FirstOrDefault

答案 1 :(得分:1)

String上的Min和Max使用字母排序...所以这种行为是预期的。

如果你想获得最大和最小长度,你可以做类似的事情;

string maxLength = tekstas.Select(s => s.Length).Max();
string minLength = tekstas.Select(s => s.Length).Min();

string maxString = tekstas.First(s => s.Length == maxLength);
string minString = tekstas.First(s => s.Length == minLength);

Console.WriteLine(maxString );
Console.WriteLine(minString );