我有6个数组列表,我想知道哪一个是最长的而不使用一堆IF语句。
“如果arraylist.count> anotherlist.count那么....”< - 无论如何要做到这一点除此之外?
VB.net或C#.Net(4.0)中的示例会有所帮助。
arraylist1.count
arraylist2.count
arraylist3.count
arraylist4.count
arraylist5.count
arraylist6.count
DIM longest As integer = .... 'the longest arraylist should be stored in this variable.
由于
答案 0 :(得分:2)
1 if
声明是否可以接受?
public ArrayList FindLongest(params ArrayList[] lists)
{
var longest = lists[0];
for(var i=1;i<lists.Length;i++)
{
if(lists[i].Length > longest.Length)
longest = lists[i];
}
return longest;
}
答案 1 :(得分:2)
你可以使用Linq:
public static ArrayList FindLongest(params ArrayList[] lists)
{
return lists == null
? null
: lists.OrderByDescending(x => x.Count).FirstOrDefault();
}
如果你只想要最长列表的长度,那就更简单了:
public static int FindLongestLength(params ArrayList[] lists)
{
return lists == null
? -1 // here you could also return (int?)null,
// all you need to do is adjusting the return type
: lists.Max(x => x.Count);
}
答案 2 :(得分:0)
SortedList sl=new SortedList();
foreach (ArrayList al in YouArrayLists)
{
int c=al.Count;
if (!sl.ContainsKey(c)) sl.Add(c,al);
}
ArrayList LongestList=(ArrayList)sl.GetByIndex(sl.Count-1);
答案 3 :(得分:0)
如果您将所有内容存储在列表列表中,例如
List<List<int>> f = new List<List<int>>();
然后像LINQ一样
List<int> myLongest = f.OrderBy(x => x.Count).Last();
将生成包含最多项目的列表。当然,当最长列表存在平局时,你将不得不处理这个案例
答案 4 :(得分:0)
如果你只想要最长的ArrayList的长度:
public int FindLongest(params ArrayList[] lists)
{
return lists.Max(item => item.Count);
}
或者,如果您不想编写函数并且只想内联代码,那么:
int longestLength = (new ArrayList[] { arraylist1, arraylist2, arraylist3,
arraylist4, arraylist5, arraylist6 }).Max(item => item.Count);