3

Variables複数のメンバーを持つこのクラスが呼び出され、そのうちの1つがName文字列で呼び出されます。私が持っていると仮定しList<Variables>ます。これには、、、、NamesXあります。YYZ

string variableName = 'Y';

int _totalCount = (from p in variableList
                    where p.Name == variableName
                    select p.Name).Count();

int _totalCount2 = variableList.Select(x => x.Name == variableName).Count();

質問:_totalCount返品中2(私が欲しいもの)はなぜ_totalCount2返品4ですか?

4

1 に答える 1

7

Selectはあなたが思っていることをしていないからです: それはフィルターではなくプロジェクションです。式は、リストの各アイテムに対して計算されます。あなたは得るでしょう。次に、結果に対して が呼び出され、 が返されます。x => x.Name == variableName{False, True, True, False}Count()4

フィルタリングはWhere、述語を取るメソッドで行われます。

int _totalCount2 = variableList.Where(x => x.Name == variableName).Count();
于 2012-10-05T02:50:41.580 に答える