如何比较foreach内部的值

时间:2012-01-31 07:54:38

标签: c#

如何比较此嵌套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


        }
    }
}

6 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

选项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

答案 2 :(得分:1)

value此处不是关键字(通过它在某些情况下)。您所要做的就是选择您喜欢的任何变量名称

答案 3 :(得分:1)

你想比较它们以确定它们是否符合顺序?或者只是一个列表包含另一个列表?

如果订单计数,则使用计数器变量同时循环两者(只需要边界检查):

        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);

答案 4 :(得分:0)

首先,在你的每一个foreach中,当前元素具有相同的名称,并且你将无法在第二个foreach中达到它们的范围。

要比较两个字符串,您可以使用String.Compare方法。例如:

foreach (string fern in ferns)
{

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


}

答案 5 :(得分:0)

您是否在尝试查看数组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]);
  }
}

如果您要查看ferns数组中fruits数组中的元素是否存在任何匹配,那么您可以尝试以下

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");
}