我有两个列表,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
}
}
答案 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)