簡體   English   中英

如何在foreach中比較foreach的值

[英]How to compare values foreach inside a foreach

如何在此嵌套的foreach中比較值。 我想比較一下,如果它們匹配,例如打印YES。 干杯

using System;

class Program
{
    static void Main()
    {
        // Use a string array to loop over.
        string[] ferns =
        {
            "apple",
            "Equisetopsida",
            "Marattiopsida",
            "Polypodiopsida"
        };

        string[] fruits=
        {
            "apple",
            "mango",
            "Marattiopsida",
            "Polypodiopsida"
        };
        // Loop with the foreach keyword.
        foreach (string value in ferns)
        {
            Console.WriteLine(value);

            foreach (string value in fruits)
            {
                Console.WriteLine(value);
            }

            //I would like to compare values here.
            //Compare frens values against fruits values.
            //How can i achieve this


        }
    }
}
foreach (string fern in ferns)
{
    Console.WriteLine(fern);

    foreach (string fruit in fruits)
    {
        Console.WriteLine(fruit);

        if(fruit.Equals(fern))
            Console.WriteLine("YES");
    }
}

選項A

foreach (string fernsvalue in ferns)
{
    foreach (string fruitsvalue in fruits)
    {
       if (fernsvalue.Equals(fruitsvalue))
          Console.WriteLine("They are equal");
    }
}

選項B

List<string> fernsList = new List<string>(ferns.Length);
List<string> fruitsList = new List<string>(fruits.Length);
fernsList.AddRange(ferns);
fruitsList.AddRange(fruits);
List<string> Differences = fernsList.Except(fruitsList).ToList();

選項C

bool equal = ferns.SequenceEqual(fruits); //compares for exact equality

value在這里不是關鍵字(在某些情況下是通過關鍵字)。 您要做的就是選擇任何您喜歡的變量名

您是否要比較它們以查看它們是否順序匹配? 還是僅僅一個列表包含了另一個列表?

如果訂單計數,則使用計數器變量同時遍歷兩個變量(只是需要邊界檢查):

        for (int x = 0; x < ferns.Length; x++)
        {
            if (ferns[x] == fruits[x])
            {
                Console.WriteLine("YES!");
            }
        }

如果只需要包含它:

        foreach (string fern in ferns)
        {
            if (fruits.Contains(fern))
                Console.WriteLine("YES!");
        }

這也是使用十字路口的好地方。 相交采用兩個列表,並返回“兩個”列表共有的所有項目。

       IEnumerable<string> commonWords = ferns.Intersect(fruits);

首先,在您的每個foreach中,當前元素具有相同的名稱,並且您將無法在第二個foreach中達到劣勢。

要比較兩個字符串,可以使用String.Compare方法。 例如:

foreach (string fern in ferns)
{

    foreach (string fruit in fruits)
    {
        if(String.Compare(fern,fruit,false)==0)
        {
             Console.WriteLine("YES");
        }
    }


}

您是否要查看數組fruitsferns元素是否在相同索引處匹配? 如果是這樣,則嵌套的foreach循環不是實現此目的的最佳方法。 使用for循環要容易得多

for (int i = 0; i < ferns.Length && i < fruits.Length; i++) {
  if (fruits[i] == ferns[i]) {
    Console.WriteLine("{0} YES!!!", fruits[i]);
  }
}

相反,如果您要查看fruits數組中的ferns數組中的元素是否完全匹配,則可以嘗試以下操作

foreach (string fern in ferns) {
  Console.Write("{0} ", fern);
  bool isMatch = false;
  foreach (string fruit in fruits) {
    if (fruit == fern) { 
      isMatch = true;
      break;
    }
  }
  Console.WriteLine(isMatch ? "YES" : "NO");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM