1

例如我有:

public static List<int> actorList = new List<int>();
public static List<string> ipList = new List<string>();

他们都有各种各样的物品。

所以我尝试使用 foreach 循环将值(字符串和 int)连接在一起:

  foreach (string ip in ipList)
    {
        foreach (int actor in actorList)
        {
            string temp = ip + " " + actor;
            finalList.Add(temp);
        }
    }

    foreach (string final in finalList)
    {
        Console.WriteLine(finalList);
    }

尽管回头看,这很愚蠢,显然行不通,因为第一个 forloop 是嵌套的。

我对 finalList 列表的期望值:

actorListItem1 ipListItem1
actorListItem2 ipListItem2
actorListItem3 ipListItem3

等等..

因此,两个列表中的值相互连接 - 对应于它们在列表顺序中的位置。

4

5 回答 5

6

ZIPLINQ的使用功能

List<string> finalList = actorList.Zip(ipList, (x,y) => x + " " + y).ToList();


finalList.ForEach(x=> Console.WriteLine(x)); // For Displaying

或将它们组合成一行

actorList.Zip(ipList,(x,y)=>x+" "+y).ToList().ForEach(x=>Console.WriteLine(x));
于 2012-05-03T10:52:41.157 回答
3

一些功能上的好处呢?

listA.Zip(listB, (a, b) => a + " " + b)
于 2012-05-03T10:53:21.833 回答
2

循环遍历索引:

for (int i = 0; i < ipList.Count; ++i)
{
    string temp = ipList[i] + " " + actorList[i];
    finalList.Add(temp);
}

您可能还想在此之前添加代码以验证列表的长度是否相同:

if (ipList.Count != actorList.Count)
{
    // throw some suitable exception
}
于 2012-05-03T10:50:37.787 回答
2

假设您可以使用 .NET 4,您需要查看Zip 扩展方法和提供的示例:

int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };

// The following example concatenates corresponding elements of the
// two input sequences.
var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);
foreach (var item in numbersAndWords)
    Console.WriteLine(item);
Console.WriteLine();

在此示例中,由于 中没有“4”的对应条目words,因此将其从输出中省略。在开始之前,您需要进行一些检查以确保集合的长度相同。

于 2012-05-03T10:51:31.827 回答
1
for(int i=0; i<actorList.Count; i++)
{
   finalList.Add(actorList[i] + " " + ipList[i]);
}
于 2012-05-03T10:50:35.857 回答