我有两个列表
foreach (var a in _teams)
{
Console.WriteLine(a);
}
foreach (var b in _wins)
{
Console.WriteLine(b);
}
每个列表都有相同数量的值。现在我正在单独打印每个值但是如何打印a或b的每个值。
_teams list返回澳大利亚,英国,美国 _wins列表返回5,6,7
我想打印像澳大利亚5,英格兰6,美国7
更新* 我正在创建xml节点,所以基本上我不想一起打印它。我想要的价值观 澳大利亚超过5比英格兰超过6,所以我将创建像
这样的xml节点<Team>Australia</Team>
<Win>5</Win>
<Team>England </Team>
<Win>6</Win>
......等等
答案 0 :(得分:0)
这个怎么样:
for(i = 0; i < _teams.Length; i++)
{
Console.Write(_teams[i] + " ");
Console.Write(_wins[i]);
if(i < _teams.Length - 1)
Console.Write(",");
}
答案 1 :(得分:0)
我建议在IEnumerable上查看zip函数。像这样:
var lst1 = new List<string>(){"One", "Two","Three"};
var lst2 = new List<string>(){"A", "B","C"};
var combined = lst1.Zip(lst2, (fst,snd) => {return fst + ":" + snd;});
foreach (var item in combined)
{
Console.WriteLine (item);
}
Zip将采用两个单独的列表,并允许您在两个列表中构建单个视图。
答案 2 :(得分:0)
试试这个:
foreach (var a in _teams.Zip(_wins, (t, w) => new { t, w }))
{
Console.WriteLine(a.t + " " + a.w);
}
答案 3 :(得分:0)
您可以使用下面提到的代码
List<string> _terms = new List<string>();
List<string> _wins = new List<string>();
_terms.Add("Australia");
_wins.Add("5");
using (var e1 = _terms.GetEnumerator())
using (var e2 = _wins.GetEnumerator())
{
while (e1.MoveNext() && e2.MoveNext())
{
var item1 = e1.Current;
var item2 = e2.Current;
// use item1 and item2
}
}
答案 4 :(得分:0)
你可以使用for循环......
for (int i = 0; i < teams.Count; i++)
{
Console.WriteLine(_teams[i]);
Console.WriteLine(_wins[i]);
}
...但是词典是一个更好的解决方案:
Dictionary<string, int> _teams = new Dictionary<string, int>();
_teams.Add("Australia", 5);
_teams.Add("England", 6);
...
foreach( KeyValuePair<string, int> kvp in _teams )
{
Console.WriteLine("{0} {1}", kvp.Key, kvp.Value);
}
答案 5 :(得分:0)
试试这个:
_teams.ForEach(x => Console.WriteLine(x +" " + _wins[_teams.IndexOf(x)]));
我们使用IndexOf
方法从_teams
获取当前字符串的索引,并获取该_wins
索引处的元素。
但是,如果这是团队之间的一对一地图,那么Dictionary
将成为我首选的数据结构。