linq:计算查询子集中的项目

时间:2009-06-11 19:11:29

标签: linq

我有一个linq查询,它返回一个int列表。我想要计算列表中的所有项目。然后计算所有数字为0的项目,然后从列表中删除0项目。

请举出简单的例子,我的是丑陋的。

2 个答案:

答案 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++;
    }