1

たとえば、私は持っています:

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

どちらもにさまざまなアイテムがあります。

そこで、foreachループを使用して値(stringと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

等々..

したがって、2つのリストの値は互いに連結され、リストの順序での位置に対応します。

4

5 に答える 5

6

ZIPLINQの機能を使用する

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


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

またはそれらを1行に結合します

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 に答える