セージ の メモ書き

メモこそ命の恩人だ

C#-LINQ

C# - LINQ 評価順序

評価順序 実験 Where が複数ある場合 大小の比較判定 一致判定と大小判定を組合せた場合 Where・Select の場合 Where・OrderBy の場合 評価順序 基本的に、メソッドを記述した順序で評価される。 レコード数が減少するように評価した方が、処理回数を減らせ…

C# - LINQ での AND条件/OR条件

AND 条件 複数のリストから共通部分を抽出 OR 条件 以下の personList オブジェクトを使用して試してみる。 public class Person { public int Id { get; set; } public string Name { get; set; } } var personList = new List<Person>() { new Person() { Id = 1, </person>…

LINQ - Select/SelectMany メソッド

Select メソッド foreach ループのインデックス SelectMany メソッド DefaultIfEmpty メソッド 注意:NullReferenceException ベースデータの取得 Select メソッド docs.microsoft.com コレクションの要素を別オブジェクトに変換できる。 要素内のプロパティ…

LINQ - OrderBy/ThenBy メソッド

OrderBy / OrderByDescending メソッド 注意:OrderBy メソッドの複数使用 ThenBy / ThenByDescending メソッド OrderBy / OrderByDescending メソッド Enumerable.OrderBy メソッド (System.Linq) | Microsoft Docs Enumerable.OrderByDescending メソッド …

LINQ の Max と Min と Average と Sum してみる

Max メソッド Min メソッド Average メソッド Sum メソッド 以下の sampleList オブジェクトを使用して試してみる。 public class SampleClass { public int IntValue { get; set; } public int? NullableIntValue { get; set; } public bool BoolValue { ge…

LINQ の ElementAt してみる

ElementAt メソッド ElementAtOrDefault メソッド list.ElementAt(n) と list[n] の違い 以下の sampleList オブジェクトを使用して試してみる。 public class SampleClass { public string SampleProperty { get; set; } = string.Empty; } var sampleList …

LINQ の Distinct してみる

Distinct メソッド ( Distinct : 異なる、区別できる ) 以下の sampleList オブジェクトを使用して試してみる。 public class SampleClass { public int SampleProperty { get; set; } = 0; } var sampleList = new List<SampleClass>() { new SampleClass(){ SamplePrope</sampleclass>…

IEnumerable インターフェース してみる

IEnumerable インターフェース 継承関係 定義 IEnumerable インターフェース IEnumerable<T> インターフェース ICollection<T> インターフェース IList<T> インターフェース List<T> クラス IEnumerable インターフェース https://docs.microsoft.co…

LINQ to CSV してみる

CsvColumn 属性 CsvFileDescription クラス 書込 / 読込処理 書込処理 読込処理 https://www.codeproject.com/Articles/25133/LINQ-to-CSV-library CSV ファイルを LINQ で扱うことができる。 作成者 : Matt Perdeck ライセンス : Apache 2.0 ダウンロード件…

Enumerable.Range と Enumerable.Repeat してみる

Enumerable.Range Enumerable.Repeat Enumerable.Range Enumerable.Range(Int32, Int32) Method (System.Linq) | Microsoft Docs 連番の数値コレクションを生成できる。 初期値と繰返回数を指定する。( 初期値と終了値ではないので注意。) こんな感じ。 var …

LINQ の First と Last と Single してみる

先頭要素の取得 First メソッド FirstOrDefault メソッド 末尾要素の取得 Last メソッド LastOrDefault メソッド 単一要素の取得 Single メソッド SingleOrDefault メソッド Single / SingleOrDefault の使いどころ 以下の sampleList オブジェクトを使用し…

LINQ の Join と GroupJoin してみる

Join メソッド GroupJoin メソッド 以下の personList, teamList オブジェクトを使用して試してみる。 public class Person { public int Id { get; set; } public string Name { get; set; } public int TeamId { get; set; } } public class Team { public…

LINQ の GroupBy してみる

GroupBy メソッド グループの最大値を持つ要素を取得 複数キーでグルーピング 以下の sampleList オブジェクトを使用して試してみる。 public class SampleClass { public string Bangou { get; set; } public int Sedai { get; set; } } var sampleList = n…

ページネーション してみる

ページネーション ( pagination ) 最大ページ数の算出 現在ページのコレクションを取得 ページネーション ( pagination ) ページネーション(パジネーション)とは - IT用語辞典 e-Words 情報を複数のページに分割して表示する機能。 この機能があれば、検索…

LINQ の Union と Except と Intersect してみる

Union メソッド ( Union : 結合 ) Except メソッド ( Except : 除外 ) Intersect メソッド ( Intersect : 交差 ) 以下の sampleList1, sampleList2 オブジェクトを使用して試してみる。 public class SampleClass { public int SampleProperty { get; set; }…

LINQ の All と Any してみる

All メソッド Any メソッド 以下の sampleList オブジェクトを使用して試してみる。 public class SampleClass { public int SampleProperty { get; set; } = 0; } var sampleList = new List<SampleClass>() { new SampleClass(){ SampleProperty = 1 }, new SampleClass</sampleclass>…

LINQ の Skip と Take してみる

Skip メソッド SkipWhile メソッド Take メソッド TakeWhile メソッド 以下の sampleList オブジェクトを使用して試してみる。 public class SampleClass { public string SampleProperty { get; set; } = string.Empty; } var sampleList = new List<SampleClass>() { ne</sampleclass>…

LINQ のラムダ式を動的に生成してみる

概要 Expression クラス 概要 方法: 式ツリーを使用して動的クエリをビルドする (C#) | Microsoft Docs 式ツリー ( Expression Tree ) でラムダ式を動的生成できる。 式ツリーは Expression クラスを使用する。 データソースは Queryable であること。(Enum…

ラムダ式 してみる

ラムダ式 匿名メソッド デリゲート ラムダ式 メソッドの引数の型がデリゲートの場合、メソッドに対して「処理を渡す」ことができる。 その渡し方の1つとして、ラムダ式がある。(現状はラムダ式が一番簡潔に記述できる。その他の方法は後述する。) ラムダ…