我有一个最初只有1行的列表:
One
Two
Three
Four
Five
Six
Seven
然后我会在列表中有以下内容 - 请注意我有2列 - 第一列是奇数,第二列是偶数:
One Two
Three Four
Five Six
Seven
我正在尝试以下方法:
foreach(var item in mod)
{
int i = 0;
i = i + 1;
if (i % 2 == 0)
{
//add to list here for even number
}
if (i % 2 != 0)
{
// add to list here for odd number
}
}
答案 0 :(得分:2)
我建议LINQ:
var odds = mod.Where((item, index) => index % 2 == 0).ToList();
var evens = mod.Where((item, index) => index % 2 == 1).ToList();
答案 1 :(得分:2)
您每次都要重新声明i
。将声明移到foreach之外。
List<int> even = new List<int>();
List<int> odd = new List<int>();
int i = 0;
foreach (var item in mod)
{
i = i + 1;
if (i % 2 == 0)
{
even.Add(i);
}
else
{
odd.Add(i);
}
}
答案 2 :(得分:2)
以前的回答出错了:
static void Main(string[] args)
{
var mod = new string[] { "One", "Two", "Three", "Four", "Five", "Six", "Seven" };
var OddNumbers = new List<string>();
var EvenNumbers = new List<string>();
int i = 0;
foreach (var item in mod)
{
i = i + 1;
if (i % 2 == 0)
{
EvenNumbers.Add(item);
}
else
{
OddNumbers.Add(item);
}
}
}
// but when you use an index in your loop I find it more readable to use this
for (var j = 0; j < mod.Length; ++j)
{
if (j % 2 == 0)
OddNumbers.Add(mod[j]);
else
EvenNumbers.Add(mod[j]);
}
答案 3 :(得分:1)
怎么样:
int i = 0;
foreach(var item in mod) //I assume 'mod' is a collection of ints?
{
if (i % 2 == 0)
{
//Do something with 'item'.
}
else
{
//Do something else with 'item'.
}
i++;
}
答案 4 :(得分:1)
根据你的上一个问题,我猜你想要这样做:
int i = 0;
foreach(var item in mod)
{
..
// rest of foreach loop here
}
答案 5 :(得分:1)
您可以根据类型创建两个列表并存储数字:
List<int> OddNumbers = new List<int>();
List<int> EvenNumbers = new List<int>();
然后执行以下操作:
foreach(var item in mod)
{
if (item % 2 == 0)
{
EvenNumbers.Add(item);
}
else
{
OddNumbers.Add(item);
}
}
答案 6 :(得分:1)
这是你的algoryth的更正版本,它修复了你总是要比较i = 1的值的事实,因为你的int i声明在循环中
int i = 0;
foreach(var item in mod)
{
i++;
if (i % 2 == 0)
{
//add to list here for even number
}
else
{
// add to list here for odd number
}
}
答案 7 :(得分:1)
简单的bool
就足够了。
var odds = new List<string>();
var evens = new List<string>();
bool odd = true;
foreach (var item in new[] {"one", "two", "three", "four"})
{
if (odd)
odds.Add(item);
else
evens.Add(item);
odd = !odd;
}
答案 8 :(得分:1)
如果你想要一个包含两列的列表,你可以使用这样的元组。
List<Tuple<List<int>, List<int>>> listTest = new List<Tuple<List<int>, List<int>>>();
List<int> evenNumber = new List<int>();
List<int> oddNumber = new List<int>();
int i = 0;
foreach (var item in mod)
{
if (i % 2 == 0)
{
//add to list here for even number
evenNumber.Add(i);
}
if (i % 2 != 0)
{
// add to list here for odd number
oddNumber.Add(i);
}
i++;
}
listTest.Add(Tuple.Create(oddNumber, evenNumber));