LoginSignup
11
16

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-01-22

やりたかったこと

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

やったこと

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 と表示されます

説明

  1. List作成
    プロパティに対応させて値を入れ込みたいので、
    クラスの型でリストを作成し、配列にクラスインスタンスを追加しています。
  2. Findで取得
    Findは最初に合致した要素のみを返すので、
    (x => x.id == 0) で id の値を指定して、
    最初に合致した id を含む要素を抽出します。
    この条件取得のやり方はラムダ式という取得方法のようです。
    今回取得したい要素は path なので、末尾に.path を付け取得します。

宿題

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

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

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

変更履歴

  • 20170123 「2.Findで取得」 部分にてFindの説明が誤っていたため修正しました。
  • 20170131 コード内の「1.List作成」部分にてプロパティと対応して、データを入れ込む処理に修正しました。
  • 20200419 記載しているコードが正常に動作しなかったため、ソース内容を変更しました。
11
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16