比较多个arraylist长度找到最长的arraylist长度

时间:2012-01-17 14:03:05

标签: c# windows vb.net arrays list

我有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.

由于

5 个答案:

答案 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);