ラムダ式を実践するための小さなアプリケーションを作った。私はこのテクニックを初めて使用しています。私は日々のコーディングでそれらを使用することに慣れ親しんで、どれほど強力であるかを実感しています。ラムダ式リストから項目を取得
私は、各ペットがName
と私は私のPet
クラスに4匹のペットを追加したAge
を持ってPet
という名前のクラスを行っています。
Where
とSelect
句を使用して、1歳のペットの名前を取得したいと考えています。しかし、私は私のコードを実行する代わりにペットを返すときに、私は
ペットクラス
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
PROGRAMクラス
var pets = new Pet[]
{
new Pet {Name="Sharo", Age=8 },
new Pet {Name="Rex", Age=4 },
new Pet {Name="Strela", Age=1 },
new Pet {Name="Bora",Age=1 }
};
p = pets.Where(pet => pet.Age == 1).Select(pet => pet.Name).ToList();
Console.WriteLine(p);
あなたが期待する何を出力? linqクエリは結果のコレクションを返します。あなたのコードでは、これは名前の集合になります。実際の値を取得するには、それをループする必要があります。 linqクエリが1つの結果だけを返すことを確信しているなら、あなたはToListの代わりにFirstOrDefaultを使うべきです。これは、結果のコレクションの最初の項目を与えるでしょう –
多分あなたは1つだけを期待し、 'First'または' Single'を使います(複数の場合は例外をスローします)。 'string petname = pets.First(p => p.Age == 1).Name;'。これは何もない場合、 'NullRefernceException'をスローします。' Console.WriteLine(p => p.Age == 1)?. Name); ' –
ラムダ式を練習する場合は(デリゲートタイプまたは表現タイプ)。私がお勧めするのは、Where、Select、GroupBy ...メソッドの拡張を実装することです。 LambdaはLINQよりずっと便利です。そして、基本的な実装は、linqメソッドは難しいことではありません。 –