我有一个linq查询,它返回一个int列表。我想要计算列表中的所有项目。然后计算所有数字为0的项目,然后从列表中删除0项目。
请举出简单的例子,我的是丑陋的。
答案 0 :(得分:2)
IList<int> intList = SomeFunctionThatReturnsInts();
int count = intList.Count();
int zeroCount = intList.Where(v => v == 0).Count();
intList.RemoveAll(v => v == 0);
答案 1 :(得分:1)
可能是最好的方法:
List<int> list = GetList();
int countAll = list.Count;
int countZero = list.RemoveAll(i => i == 0);
//RemoveAll returns the number of elements removed = the count of 0es
天真的方法:
List<int> list = GetList();
int countAll = list.Count;
int countZero = list.Count(i => i == 0);
//remove zeroes
for(int i = list.Count - 1; i >= 0; i--)
if(list[i] == 0) list.RemoveAt(i);
可能比那更快 - 因为它只是一次通过方法:
List<int> list = GetList();
int countAll = list.Count;
int countZero = 0;
//remove zeroes
for(int i = list.Count - 1; i >= 0; i--)
if(list[i] == 0)
{
list.RemoveAt(i);
countZero++;
}