2017-04-01 5 views
0

私はソート技術を読んでインターネット上を見ていたので、ラムダを見つけました。 私はそれがどのように動作するかを完全には確信していませんし、私のレベルまで壊したチュートリアルを見つけることができませんでした。xはこのラムダ式のどこから来たのですか?

これは、私が打破しようとしているものです。

var sorted = list.OrderBy(x => new MailAddress(x).Host).ToList(); 

私はsortedという名前の変数を作成します。これは、リストからソートされた項目を保持する変数になります。

これは、私がxから来るんやラムダ式は正確に何を意味しているのはどこ

OrderBy(x => new MailAddress(x).Host) 

を理解しない部分でありますか? => この表現は好きではないことを意味する!=です。 そして私はそれがホストによって並べ替えるので、Yahoo、GMAIL & Hotmail。

+0

私はあなたの質問は、** **かもしれないと思う "ラムダ式が何でありますか?" –

+0

"x"は単なる識別子です –

+0

MSドキュメント:[ラムダ式(C#プログラミングガイド)](https://msdn.microsoft.com/en-us/library/bb397687.aspx)xは入力パラメータと呼ばれます – Nkosi

答えて

1

最も簡単な言葉で言えば、xは宣言する変数です。

したがって、"xのようにxは" ...あなたのクエリの入力パラメータと出力パラメータに基づいて伝達しようとしている表現は何であれ。

あなたに別の例を与えるために:

var sorted = list.Where(x => x.Name == "Foo").ToList(); 

をこれは、 "xはFooのに等しいことをX等" として読み込みます。これはFooと等しいNameプロパティを持つすべてのリストを返します。

これをさらに説明するために、オーバーロードされたEnumerableメソッドの1つ「ここでは」を調べてください。 MSDNによると:

enter image description here

実際の構文は次のとおりです。

Where<TSource>(
this IEnumerable<TSource> source, 
Func<TSource, bool> predicate 

整数のリストを宣言することができます別の例を与えるために。私たちの目標は、すべての偶数の整数を得ることです:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 

今偶数であるすべての整数を照会するために、我々は、ラムダ構文を使用して、どこに拡張メソッドのオーバーロードされたバージョンのいずれかを使用します。それは言う:

enter image description here

だからここにソースがある: "番号" 変数はTSOURCEのIEnumerableをされ

numbers.Where(); 

ので。 ここでのTSourceは、タイプ「T」の任意のIEnumerableまたは任意のタイプのエンティティです。

最後の部分はFuncを受け入れます。 Funcは定義済みのデリゲート型です。匿名メソッドを一般化された単純な方法で格納する方法を提供します。これをさらに理解するには、もう一度読むことができます。は、を受け入れ、は、ブール結果を出力します。今、私たちはそれを渡すことができ

Func<int, bool> fncParameter = x => x % 2 == 0; 

enter image description here

今度は、この場合には、私たちの例となります出力ブール結果として整数をTSOURCEを受け入れるのFuncを作成してみましょう私たちに:

numbers.Where 

される:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
Func<int, bool> fncParameter = x => x % 2 == 0; 
IEnumerable<int> result = numbers.Where(fncParameter); 

やショートで:

ist<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
IEnumerable<int> result = numbers.Where(x => x % 2 == 0); 
+1

「OrderBy」と「Where」が混在していると思います。 – juharr

+0

これについてもう少し詳しく説明してもらえますか? –

+0

答えを更新しました。それが助けになるか、あなたに質問があるかどうか私に教えてください。 @ChristofferNilsson –

関連する問題