2016-12-06 71 views
-1

我有一个度量来自Power Analzyzer存储为二维数组。单一度量有18个参数。所以,当我有4个措施,他们被存储在array(3)(17)如何使用LINQ从数组列表中选择特定值

我想要做的是有一个参数的唯一编号此数组值选择。接下来,我想从中选择一个具有最高值的另一个参数。

我从这个数组数组的新列表复制数据,所以我可以用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)。

+2

这是很难准确地了解你问..如果你能提供的数据的一个例子(最好以表格形式),显示您想选择这将是非常有帮助的任何人想帮 –

回答

0

所以我研究出你的意思(我认为)。

试试这个:

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

只需更换voltageValidVal与其对应的索引。

这组由ID的所有措施,然后将它们排序,在由电压降序排列,选择所述第一各自的作为整数数组。

+0

好像什么作品!但我不明白这个代码,尤其是那些函数x语句。 –

+0

这是LINQ的扩展方法版本,我更喜欢使用它。 'Function(x)'是一个'匿名方法',''x是你正在执行的功能的集合。所以'GroupBy()'将把你的'List(Of Integer())'作为'x'并且用ID值进行分组。该参数不必被命名为'x',它可以是任何你想要的。 –

相关问题