在Array中查找最短元素

时间:2010-04-21 07:44:56

标签: c# arrays

我有一个数组

string[] names = { "Jim Rand", "Barry Williams", "Nicole Dyne", "Peter Levitt", "Jane Jones", "Cathy Hortings"};

有没有办法找到这个数组中最短(Length wise)元素,然后将其余元素存储在不同的数组中。

谢谢, Ani

3 个答案:

答案 0 :(得分:9)

var orderedNames = names.OrderBy(name => name.Length);

string shortestName = orderedNames.First();

string[] otherNames = orderedNames.Skip(1).ToArray();

答案 1 :(得分:2)

在C#,。Net 3.5中:

string shortestName = names.Aggregate((n1, n2)=>n1.Length<n2.Length?n1:n2);

这是你可以在其他数组

中存储其他元素的方法
var otherArrays = names.Exclude(new List<string>(){shortestName});

答案 2 :(得分:1)

对于Array没有.Exclude方法(或扩展方法),他没有说他想要更改新数组的集合类型。您对.Aggregate的使用非常出色,让我们更进一步,并使用.Aggregate进行排除!

像这样:

string shortestName = names.Aggregate((n1, n2) => n1.Length < n2.Length ? n1 : n2);
string nonArrayString = names.Aggregate((n1, n2) => n2 != shortestName ? n1 + " " + n2 : n1);
string[] newNames = nonArrayString.Split(' ');

David Hedlund的技术仍然好得多,因为它更容易阅读!写出最复杂的答案没有奖励点... lol