4

コレクションに複数の異なる値があるかどうかを判断するためにlinq.jsを使用する効率的な方法を探しています。コレクション全体を考慮する必要があるため、次のアプローチは非効率的であると思います。

if (Enumerable.From(collection).Distinct().Take(2).Count() > 1) {
    //it's not unique, continue loop
}

私の質問は次のようなものです: Efficient Linq Enumerable's 'Count() == 1' test

より効率的な linq.js ベースの手法はありますか? ありがとう!

4

2 に答える 2

1

コレクションに複数のアイテムがあるかどうかを具体的にテストしている場合、それを記述する慣用的な方法 (IMHO) はSkip、 と組み合わせて使用​​することAnyです。最初の項目をスキップし、コレクションに他の項目がある場合は、複数あります。空の場合、Skipは事実上何も実行せず、コレクション内に他の項目はありません。

あなたの場合、あなたの条件は次のようになります。

if (Enumerable.From(collection).Distinct().Skip(1).Any()) {
    //it's not unique, continue loop
}
于 2013-03-24T20:03:40.380 に答える
0
var test = collection[0];
if (Enumerable
    .From(collection)
    .Skip(1)
    .Any(function (e) { return e != test; })
   )

説明させてください。少なくとも 2 つの個別の項目は、任意の項目に対して、それと等しくない項目が少なくとも1 つあることを意味します。最初の項目を選択してみましょう。他の項目を選択することもできます。最初の項目の方が便利です。それと等しくない他の番号 (それ自体を除く) があるかどうかを見てみましょう。

于 2013-03-19T22:35:40.517 に答える