사용자 지정 계산 공식 언어는 VB를 기반으로 하며 LINQ로 확장할 수 있습니다. 사전 정의된 함수로 계산을 수행할 수 없는 경우 언제든지 LINQ로 수식을 작성할 수 있습니다.
다음은 몇 가지 유용한 LINQ 표현식 목록입니다. 이 목록이 전부는 아닙니다. 자세한 내용은 Microsoft Visual Basic LINQ 설명서를 참조하세요.
추천 링크:
필터의 원리는 술어에 따라 주어진 항목 목록을 필터링하는 것입니다. 필터를 적용하려면 다음이 필요합니다.
필터링할 목록
술어(목록 항목을 받아 부울을 반환하는 함수)
결과는 입력 목록의 일부 항목이 포함된 새 목록입니다.
새 목록의 항목 수는 입력 목록보다 작습니다. |
구문:
InputList.Where(Function(x) 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))
투영의 원리는 주어진 항목 목록에서 모든 항목을 변환하여 목록을 만드는 것입니다. 투영을 적용하려면 다음이 필요합니다:
변환할 목록
투영 함수(목록 항목을 가져와 새 항목을 반환하는 함수)
결과는 입력 목록과 같은 길이의 새 목록입니다. 항목 유형은 다를 수 있습니다! |
구문:
InputList.Select(Function(x) 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)
집계: 집계를 호출합니다.
함수: 누적 함수를 작성합니다.
예제:
(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)와 동일하다는 점에 유의하세요.