Edited at

(C#)Listで要素を検索し取得する

More than 1 year has passed since last update.


やりたかったこと

データをリスト形式で入れ込んだ後に、プロパティ項目に対応する要素を抽出する。


やったこと

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>();

cityList.Add(new CityList()(Id = 0, Name = "tokyo", Path = "./path/tokyo"));
cityList.Add(new CityList()(Id = 1, Name = "osaka", Path = "./path/osaka"));

// 2. Findで取得
string filepath = cityList.Find(x => x.id == 0).Path;

Console.WriteLine(filepath);
// ./path/tokyo


説明


  1. List作成

    プロパティに対応させて値を入れ込みたいので、

    クラスの型でリストを作成し、追加しています。

  2. Findで取得

    Findは最初に合致した要素のみを返すので、

    (x => x.id == 0) で id の値を指定して、

    最初に合致した id を含む要素を抽出します。

    この条件取得のやり方はラムダ式という取得方法のようです。

    今回取得したい要素は path なので、末尾に.path を付け取得します。


宿題

ラムダ式について理解できていないので調査します。


参考にさせていただいたサイト

C# List 任意の項目を削除・抽出・変換する


変更履歴


  • 20170123

    「2.Findで取得」 部分にてFindの説明が誤っていたため修正しました。

  • 20170131

    コード内の「1.List作成」部分にてプロパティと対応して、データを入れ込む処理に修正しました。