我有两个数组列表c#。在我的代码下面工作我的要求,但它有很多限制。任何人都可以告诉我如何在没有价值硬编码的情况下编写下面的代码有效方法?并支持任意数量的“cname”值。因为我的下面的代码已经硬编码了。它仅支持4(cname)值。超过4个值来说它是'IndexOutOfRange'。
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();
}
}
答案 0 :(得分:1)
最简单的方法:
获取couName == cname[i]
:
var index = cname.FindIndex(x => x == couName);
将Colour
设置为colors1
的相应值:
Colour = colors1[index];
您可能希望在两者之间加入一些检查,以确保在找不到值时代码不会中断。
答案 1 :(得分:0)
嗨鲍勃检查以下片段是否符合您的要求......
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();
}
答案 2 :(得分:0)
参考此
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();
检查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)]);
}
}
}