やりたかったこと
データをリスト形式で入れ込んだ後に、プロパティ項目に対応する要素を抽出する。
やったこと
List.Findメソッド で対応しました。
前提
以下のようなプロパティを持つクラスを作成します。
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public string Path { get; set; }
}
使い方
id が 0 リストの path を取得したいと思います。
// 1. List作成
List<City> cityList = new List<City>
{
new City { Id = 0, Name = "tokyo", Path = "./path/tokyo" },
new City { Id = 1, Name = "osaka", Path = "./path/osaka" }
};
// 2. Findで取得
string filepath = cityList.Find(x => x.Id == 0).Path;
// 表示確認
Console.WriteLine(filepath);
// ./path/tokyo と表示されます
説明
- List作成
プロパティに対応させて値を入れ込みたいので、
クラスの型でリストを作成し、配列にクラスインスタンスを追加しています。 - Findで取得
Findは最初に合致した要素のみを返すので、
(x => x.id == 0) でid
の値を指定して、
最初に合致したid
を含む要素を抽出します。
この条件取得のやり方はラムダ式という取得方法のようです。
今回取得したい要素はpath
なので、末尾に.path
を付け取得します。
宿題
ラムダ式について理解できていないので調査します。
参考にさせていただいたサイト
変更履歴
- 20170123 「2.Findで取得」 部分にてFindの説明が誤っていたため修正しました。
- 20170131 コード内の「1.List作成」部分にてプロパティと対応して、データを入れ込む処理に修正しました。
- 20200419 記載しているコードが正常に動作しなかったため、ソース内容を変更しました。