大山的LabVIEW/TestStand分享大山的LabVIEW/TestStand分享

面向 LabVIEW 与 TestStand 的个人知识分享站

LabVIEW vs C#:数组处理

LabVIEW vs C#:数组处理

LINQ 是 C# 中处理集合数据的"语言内置查询管线",和 LabVIEW 的 For Loop + 图形化节点一一对应

发布时间:2026-08-10阅读时长:15 分钟浏览 20访客仅可浏览正文内容
LabVIEW 方式
LINQ 方式
过滤
double[] readings = { 23.5, 18.2, 26.1, 15.8, 30.0, 22.3 };
// LINQ:一行过滤
var high = readings.Where(r => r > 20).ToArray();
//         ↑          ↑        ↑
//         数据源       对每个元素  判定条件(Lambda)
转换
// LINQ:每个元素 × 2,然后转成 string
double[] readings = { 23.5, 18.2, 26.1, 15.8, 30.0, 22.3 };
var labels = readings
    .Select(r => r * 2)          // [47, 36.4, 52.2, 31.6, 60, 44.6]
    .Select(r => $"{r:F1} °C")   // ["47.0 °C", "36.4 °C", ...]
    .ToArray();
排序
// 升序
var ascending = readings.OrderBy(r => r).ToArray();
// 降序
var descending = readings.OrderByDescending(r => r).ToArray();

// 按自定义规则排序(如按离 22 的距离)
var byDistance = readings.OrderBy(r => Math.Abs(r - 22.0)).ToArray();
LINQ 方法LabVIEW VI示例
.Average()Mean.vireadings.Average() → 22.65
.Sum()Add Array Elements.vireadings.Sum() → 135.9
.Max()Array Max & Min.vi(上半)readings.Max() → 30.0
.Min()Array Max & Min.vi(下半)readings.Min() → 15.8
.Count()Array Size.vireadings.Count() → 6
.First()Index Array(端子设 0)readings.First() → 23.5
.Last()Index Array(端子设 N-1)readings.Last() → 22.3
链式
// 链式:先过滤,再求平均(只计算 >20 的读数的平均值)
double avgHigh = readings.Where(r => r > 20).Average();  // 25.33
分组
// 按"是否高温"分组
var groups = readings.GroupBy(r => r > 25 ? "高温" : "常温");
// 高温组: { 26.1, 30.0 }
// 常温组: { 23.5, 18.2, 15.8, 22.3 }

// 按个位数分组
var byDigit = readings.GroupBy(r => (int)r % 10);
// 个位=5: { 23.5, 15.8, 30.0 }  个位=8: { 18.2 }  ...
LabVIEW
LINQ
var top3 = voltages
    .Where(v => v > 5.0)
    .OrderByDescending(v => v)
    .Take(3)
    .ToArray();
操作LabVIEWLINQ
遍历数组Auto-Indexing For LoopLINQ 方法链隐式遍历
过滤For Loop + Case Structure.Where(x => condition)
变换For Loop + 运算节点.Select(x => expression)
排序(升)Sort 1D Array.vi.OrderBy(x => x)
排序(降)Sort + Reverse 1D Array.OrderByDescending(x => x)
取前 N 个Array Subset.vi.Take(N)
跳过前 N 个Array Subset(设 start).Skip(N)
去重较复杂.Distinct()
求平均Mean.vi.Average()
求和Add Array Elements.vi.Sum()
分组手动 While Loop + 条件.GroupBy(x => key)

附件下载

留言区

只有注册用户可以留言和下载附件。立即注册已有账号,去登录
正在加载留言...