Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 两个数组列表c#循环通过_Asp.net Mvc_Loops_C# 4.0_Foreach - Fatal编程技术网

Asp.net mvc 两个数组列表c#循环通过

Asp.net mvc 两个数组列表c#循环通过,asp.net-mvc,loops,c#-4.0,foreach,Asp.net Mvc,Loops,C# 4.0,Foreach,我有两个数组列表c#。下面是我的代码,可以满足我的需求,但它有很多限制。有谁能告诉我,在没有价值硬代码的情况下,如何高效地编写下面的代码?并支持任意数量的“cname”值。因为我下面的代码已经硬编码了值。它只支持4个(cname)值。超过4个值显示为“IndexOutfrange” string couName1 =""; string Colour = ""; var colors = new List<string>(); colors.Add("red"); colors.Ad

我有两个数组列表c#。下面是我的代码,可以满足我的需求,但它有很多限制。有谁能告诉我,在没有价值硬代码的情况下,如何高效地编写下面的代码?并支持任意数量的“cname”值。因为我下面的代码已经硬编码了值。它只支持4个(cname)值。超过4个值显示为“IndexOutfrange”

string couName1 ="";
string Colour = "";
var colors = new List<string>();
colors.Add("red");
colors.Add("green");
colors.Add("blue");
colors.Add("yellow");
var cname = new List<string>();
 cName.Add("AAAA");
 cName.Add("BBBB");
 cName.Add("CCCC");
 cName.Add("DDDD");

foreach (var couName in cname)
{
    couName1 = CouName.ToString();
}

foreach (var colors1 in colors)
{
    if ((colors1 == "red") && (couName1 == cname[0]))
    {
        Colour = colors1.ToString();
    }
    else if ((colors1 == "green") && (couName1 == cname[1]))
    {
        Colour = colors1.ToString();
    }
    else if ((colors1 == "blue") && (couName1 == cname[2]))
    {
        Colour = colors1.ToString();
    }
    else if ((colors1 == "yellow") && (couName1 == cname[3]))
    {
        Colour = colors1.ToString();
    }
}
字符串conname1=”“;
字符串颜色=”;
var colors=新列表();
颜色。添加(“红色”);
颜色。添加(“绿色”);
颜色。添加(“蓝色”);
颜色。添加(“黄色”);
var cname=新列表();
cName.添加(“AAAA”);
cName.添加(“BBBB”);
cName.添加(“CCCC”);
cName.添加(“DDDD”);
foreach(cname中的var CONNAME)
{
couName1=CouName.ToString();
}
foreach(颜色中的var colors1)
{
如果((colors1==“red”)&&(couName1==cname[0]))
{
颜色=颜色1.ToString();
}
如果((colors1==“绿色”)&&(couName1==cname[1]),则为else
{
颜色=颜色1.ToString();
}
如果((colors1==“blue”)&&(couName1==cname[2]),则为else
{
颜色=颜色1.ToString();
}
否则,如果((颜色1==“黄色”)&&(名称1==cname[3]))
{
颜色=颜色1.ToString();
}
}
最简单的方法:

  • 获取索引,其中
    couName==cname[i]

    var index = cname.FindIndex(x => x == couName);
    
  • color
    设置为
    colors1
    中的相应值:

    Colour = colors1[index];
    

  • 您可能希望在两者之间加入一些检查,以确保在找不到值时代码不会中断。

    嗨,bob check愚弄代码片段它是否满足您的要求

    public void ArrayDemo()
            {
                List<string> lst1 = new List<string>() { "Red", "Blue", "White" };
    
                List<string> lst2 = new List<string>() { "Red", "Black", "White" };
    
                foreach (string color1 in lst1)
                {
                    foreach (string color2 in lst2)
                    {
                        if (color1 == color2)
                        {
                            Console.WriteLine(color1);
                        }
                    }
                }
                Console.ReadKey();
            }
    
    public void ArrayDemo()
    {
    List lst1=新列表(){“红色”、“蓝色”、“白色”};
    List lst2=新列表(){“红色”、“黑色”、“白色”};
    foreach(lst1中的字符串color1)
    {
    foreach(lst2中的字符串color2)
    {
    if(color1==color2)
    {
    控制台写入线(彩色1);
    }
    }
    }
    Console.ReadKey();
    }
    
    请参阅此

                List<string> lst1 = new List<string>() { "aaa", "aaa", "ccc", "ddd", "eee", "fff", "ccc", "aaa" };
    
                List<string> lst2 = new List<string>() { "aaa", "bbb", "ddd", "ccc", "eee" };
    
                List<string> lst3 = new List<string>() { "Red", "yellow", "blue" };
    
                Dictionary<string, string> NameColor = new Dictionary<string, string>();
    
                foreach (string name1 in lst1)
                {
                    foreach (string name2 in lst2)
                    {
                        if (name1 == name2 && NameColor.Count < lst3.Count && !NameColor.ContainsKey(name1))
                        {
                            NameColor.Add(name2, lst3[NameColor.Count]);
                        }
                    }
                }
                Console.ReadKey();
    
    List lst1=新列表(){“aaa”、“aaa”、“ccc”、“ddd”、“eee”、“fff”、“ccc”、“aaa”};
    列表lst2=新列表(){“aaa”、“bbb”、“ddd”、“ccc”、“eee”};
    List lst3=新列表(){“红色”、“黄色”、“蓝色”};
    Dictionary NameColor=新字典();
    foreach(lst1中的字符串名称1)
    {
    foreach(lst2中的字符串名称2)
    {
    如果(name1==name2&&NameColor.Count
    检查这个1

            List<string> lst1 = new List<string>() { "aaa", "ccc", "ddd", "eee", "fff" };
    
            List<string> lst2 = new List<string>() { "aaa", "bbb", "ddd","ccc","eee"  };
    
            List<string> lst3 = new List<string>() { "Red", "yellow", "blue" };
    
            Dictionary<string, string> NameColor = new Dictionary<string, string>();
    
            foreach (string name1 in lst1)
            {
                foreach (string name2 in lst2)
                 {
                    if (name1 == name2 && lst1.IndexOf(name1) < lst3.Count)
                    {
                        NameColor.Add(name1, lst3[lst1.IndexOf(name1)]);
                    }
                }
            }
    
    List lst1=newlist(){“aaa”、“ccc”、“ddd”、“eee”、“fff”};
    列表lst2=新列表(){“aaa”、“bbb”、“ddd”、“ccc”、“eee”};
    List lst3=新列表(){“红色”、“黄色”、“蓝色”};
    Dictionary NameColor=新字典();
    foreach(lst1中的字符串名称1)
    {
    foreach(lst2中的字符串名称2)
    {
    if(name1==name2&&lst1.IndexOf(name1)
    你好,MarcinJuraszek,var索引始终为0,请您为我修改我的代码。感谢您
    var cName=新列表(cName)中的
    cName
    是什么?输出是什么(cname的值)?第一个循环的要点是什么?它将
    couName1
    设置为
    cname
    中的最后一个值。(我假设
    CouName.ToString()
    是一个输入错误,应该是
    CouName.ToString()
    )这里没有任何意义。你想做什么?你好,MarcinJuraszek,我的要求是例如couName1有3到16个唯一的名称。数据库come string conname=reader.GetString(9);。couName1=AAAA,CouName name have AAAA有10条记录,其中10条数据显示为红色。couName1=BBBB,CouName name have bbbbbb有20条记录,显示所有bbbbbb 20条记录显示为黄色,等等……你没有任何意义。您需要显示更多的代码、输出内容以及预期结果。如果你想回应Marcin,请在他的回答中添加评论!那么你希望结果是什么呢?您的意思是如果值为
    AAAA
    您希望颜色为
    红色
    ,如果值为
    bbbbbb
    您希望颜色为
    绿色
    ?你需要解释你想要达到的目标是的,AAA=红色,BBB=绿色,CCC=黄色等…最终输出应该是这样的,名称1=红色,名称2=黑色,名称3=白色等…鲍勃,这意味着你有3个列表。。。第二个用于比较,第三个用于分配?你好,Vrishali,只能为我做lst1和lst2,请检查我的编辑代码列表1。thanksList lst1=新列表(){“Name1”、“Name2”、“Name3”};鲍勃,我们怎么能用颜色n来命名1。。。。。。只要告诉你的输入和预期的outputHello异常错误(已经添加了一个具有相同键的项)在我添加相同名称时就会出现。列表1的名称大部分时间重复,但列表2的所有名称都是唯一的。lst1=新列表(){“aaa”、“aaa”、“aaa”、“ccc”、“ddd”、“ccc”、“ccc”、“eee”、“fff”};嗨,鲍勃,你还面临这个问题吗?参考此是的,请检查我的注释和代码(硬代码值)。如果你能修改你的代码我的要求。感谢添加COLOR=colors1.ToString()行代码;如果(CName==CouName&&CName.IndexOf(CName)