2017-11-01 9 views
0

linqで以前に作成したリストを、まったく同じlinqチェーンで参照するにはどうすればよいですか?ここで同じlinqチェーン内のlinqコレクションを参照する方法は?

var prices = new List<decimal>(){5.96m, 8, 1.5m, 3.4m, 8, 9, 3}; 
var multiPrices = prices.Select(p => Math.Round(p)).Where(p => **RoundedCollection**.Count(n => n == p) > 1).... 

私はRoundedCollectionはので、最後に、multiPrices変数がどの元のコレクションから、丸みを帯びたエントリが含まれますprices.Select(p => Math.Round(p))によって作成された丸みを帯びたリストを参照する必要があり、四捨五入後、コレクションに複数回存在する。

8, 3, 8, 3 

が、これは2行にLINQを分割せずに、行うことができます。

これは、最終的なコレクションの内容になりますか?

ありがとうございました

+2

次の2つの場所で値を再利用しようとしている場合は、クエリ構文と 'let'を使用する必要があります。 –

+0

@GrantWinney https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/query-syntax-and-method-syntax-in-linq –

+0

新しい匿名タイプをあなたのすべてのデータ... –

答えて

-2

これは、望ましい出力を生成します。

var prices = new List<decimal>() { 5.96m, 8, 1.5m, 3.4m, 8, 9, 3 }; 
var output = prices.Select(p => Math.Round(p)).Where(prices.Select(p => Math.Round(p)) 
     .GroupBy(x => x) 
     .Where(x => x.Count() > 1) 
     .Select(x => x.Key).Contains); 

8,3,8,3

.net fiddle

+0

なぜ結合が必要ですか? –

+0

'var fxn = prices.Select(p => Math.Round(p));であれば、なぜこれを使うべきですか? var multiPrices = fxn.Where(p => fxn.Count(n => n == p)> 1); '読みやすくなります –

+0

質問:'これは2行に分割することなく行えますか? ' –

関連する問題