自定义计算公式语言基于 VB,可通过 LINQ 进行扩展。如果无法使用预定义函数进行计算,可随时使用 LINQ 编写公式。
以下是一些有用的 LINQ 表达式。该列表并不详尽。更多详细信息请参见 Microsoft Visual Basic LINQ 文档。
建议的链接:
筛选的原理是根据断言筛选给定的项目列表。要应用筛选,需要:
要筛选的列表
断言(获取列表项并返回布尔值的函数)
结果是包含输入列表中部分项目的新列表。
新列表中的项目数少于输入列表。 |
语法:
InputList.Where(Function(x) predicate)
Where:调用筛选
Function:编写断言
示例:
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))
投射的原理是通过转换每个项目从给定的项目列表创建列表。要应用投射,需要:
要转换的列表
投射函数(获取列表项并返回新项的函数)
结果是与输入列表长度相同的新列表。项目类型可以是不同的! |
语法:
InputList.Select(Function(x) projection)
Select:调用转换
Function:写入投射函数
示例:
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) 是一样的。