私はintのリストを返すlinqクエリを持っています。私はリスト内のすべての項目を数えたいと思う。番号0のすべてのアイテムを数え、リストから0のアイテムを削除します。linq:クエリのサブセット内のアイテムをカウントする
私は単純な例を示してください、私は醜いです。
私はintのリストを返すlinqクエリを持っています。私はリスト内のすべての項目を数えたいと思う。番号0のすべてのアイテムを数え、リストから0のアイテムを削除します。linq:クエリのサブセット内のアイテムをカウントする
私は単純な例を示してください、私は醜いです。
おそらく最良の方法:
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);
おそらく-よりも速いこと-it's専用-1-渡すので、スルー方法:
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++;
}
oops - 間違った投稿をコメントしました – Jazzy
IList<int> intList = SomeFunctionThatReturnsInts();
int count = intList.Count();
int zeroCount = intList.Where(v => v == 0).Count();
intList.RemoveAll(v => v == 0);
あなたの例を少なくとも投稿できませんでしたか? – Joey
おそらく、すべてのレコードに対してcount linqクエリを実行し、0でないアイテムのリストを返すほうが簡単でしょう.2つのトランザクションになりますが、私の場合はより速くなると私に伝えます。 –
@andrew、これは私がやったことです。 thx – zsharp