2016-12-06 88 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',它可以是任何你想要的。 –

相關問題