如何使用foreach迭代更大的列表

时间:2014-05-28 11:10:43

标签: c# foreach

我有两个列表,list1的大小为5的元素,list2的大小为6的元素。 我想使用foreach语句迭代更大的列表大小(例如,在这种情况下为6),但问题是我没有使用if条件来检查哪个列表更大。 那么我该如何做必要的任务呢。

if (list1.Count>list2.Count) // here I donot want to use if statement
{                            // do it in 1 statement only
    Size=list1.Count;
    foreach (var item in list1)
    {
        // do something
    }
}
else 
{
    Size = list2.Count;
    foreach (var item in list2)
    {
        // do something
    }
}

2 个答案:

答案 0 :(得分:6)

您可以将条件移至foreach:

foreach(var item in (list1.Count > list2.Count ? list1 : list2))
{
    // do stuff
}

如果您有多个列表(超过2个),则可以使用LINQ创建集合并获得最大值:

var myLists = new List<List<T>>(); // T is the generic type of your Lists, obviously
myLists.Add(list1);
myLists.Add(list2);
...
myLists.Add(listN);

// iterate over the largest one:
foreach (var item in myLists.First(l => l.Count == lists.Max(x=>x.Count)))
{
    // do stuff
}

答案 1 :(得分:4)

var list = list1.Count > list2.Count ? list1 : list2;

foreach(var item in  list)