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