LINQ

カスタム計算式の言語は VB に基づき、LINQ で拡張できます。既定の関数で計算を実行できない場合、いつでも LINQ で式を作成できます。

便利な LINQ の式をいくつか次にリストします。網羅的なリストではありません。詳細は、Microsoft Visual Basic LINQ のマニュアルを参照してください。

推奨リンク:

フィルター

フィルターの原理は、predicate に基づいてアイテムの任意のリストをフィルターすることです。フィルターを適用するには、以下が必要となります。

  • フィルターするリスト

  • predicate (リストのアイテムを取得し、ブール値を返す関数)

結果は、入力リストのいくつかのアイテムを含む新しいリストです。

新しいリストのアイテムの数は、入力リストより少なくなります。

構文:

  • InputList.Where(Function(x) predicate)

  • Where:フィルター

  • Function:predicate を書き込む

例:

CurrentSignal.AllPeaks.Where(Function(p) p.Peak_Area>1.2 and p.Peak_Height<1000) は、1.2 を超える面積で、1000 未満の高さを持つピークのリストを返します。

式にこのリストを使用し、リストにあるすべてのピークの面積を合計できます。

Sum("Peak_Area", CurrentSignal.AllPeaks.Where(Function(p) p.Peak_Area>1.2 And p.Peak_Height<1000))

射影

射影の原理は、各アイテムを変換し、そのアイテムリストからリストを作成することです。射影を適用するには、以下が必要となります。

  • 変換するリスト

  • projection(射影)関数(アイテムリストを取り出し、新しいアイテムを返す関数)

結果は、入力リストと同じ長さの新しいリストです。アイテムのタイプは異なる可能性があります。

構文:

  • InputList.Select(Function(x) projection)

  • Select:変換

  • Function:projection を書き込む

例:

CurrentSignal.AllPeaks.Select(Function(p) p.Peak_Area) は、ピークのリストから Peak_Area 値のリストを返します。

その後、合計できます。CurrentSignal.AllPeaks.Select(Function(p) p.Peak_Area).Sum()

これは、定義済みのカスタム計算の関数 Sum(“Peak_Area”, CurrentSignal.AllPeaks) と同等です。

集計

集計の原理は、リストからの単一の値を計算することです。集計を適用するには、以下が必要となります。

  • InputList.Select(Function(x) projection)

  • 集計するリスト

  • アキュームレート関数(集計や現在のアイテムを取得する関数)

  • 集計の初期値

結果は、一意の集計値です。集計値のタイプは、アイテムのタイプと異なる可能性があります。

構文:

  • InputList.Aggregate(initial value,Function(acc,x) accumulation)

  • Aggregate:集計

  • Function:アキュームレート関数を書き込む

例:

(CurrentSignal.AllPeaks.Select(Function(p) p.Peak_Area)).Aggregate("", Function(acc,x) acc+" ; "&x) は、" ; " で区切られたすべてのピーク面積のリストを返します。

これは VB 関数と同等です。string.join(" ; " ,CurrentSignal.AllPeaks.Select(Function(p) p.Peak_Area))

(CurrentSignal.AllPeaks.Select(Function(p) p.Peak_Area)).Aggregate(0.0, Function(acc,x) acc+x) は、ピーク面積の合計を返します。

これは、定義済みのカスタム計算の関数 Sum(“Peak_Area”, CurrentSignal.AllPeaks) と同等です。