我有一个数组
string[] names = { "Jim Rand", "Barry Williams", "Nicole Dyne", "Peter Levitt", "Jane Jones", "Cathy Hortings"};
有没有办法找到这个数组中最短(Length wise)元素,然后将其余元素存储在不同的数组中。
谢谢, Ani
答案 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