如何使用LINQ

时间:2016-12-06 13:53:22

标签: vb.net

我将Power Analzyzer的测量值存储为二维数组。单一测量有18个参数。因此,当我有4个度量值时,它们将存储在array(3)(17)

我想要做的是从具有唯一数量的一个参数的数组值中进行选择。接下来我想从中选择一个具有另一个参数值最高值的那个。

我将此数组中的数据复制到新的数组列表中,因此我可以使用LINQ。 但是我写错了正确的LINQ请求。下面我用伪代码写我的请求,这样你就会知道我想做什么。我有多组度量(11)值,并且可能有办法自动为每个组执行此操作。

    dim Query = from values in measures
                where measures(11) is equal in all query and
                where is max value of measures(2)
                select values 

以下是3项措施:

    measure no1: (value(1), value(2), ...value(11), .. value(18))
    measure no2: (value(1), value(2), ...value(11), .. value(18))
    measure no3: (value(1), value(2), ...value(11), .. value(18))

所以我有array(2)(17)。通常我会有成百上千的措施。

所有值均为整数,值2为电压,值11为度量ID。有时措施具有相同的ID。在这种情况下,分析器会告诉我们这些措施适用于同一事件,因此我想从中选择一个在值(2)中具有最高记录值的措施。

1 个答案:

答案 0 :(得分:0)

所以我想出了你的意思(我认为)。

试试这个:

Dim maxResultsPerById = measures.GroupBy(Function(x) x(idVal)).OrderByDescending(Function(x) x(voltageVal)).Select(Function(x) x.First())

只需将voltageValidVal替换为相应的索引。

按ID分组所有度量,然后按电压降序对它们进行排序,选择第一个作为整数数组。