カスタム計算式の言語は 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) と同等です。