2017-08-02 104 views
-1

比方說,我已經和這條線的類型X一個List<X> lxLAMBDA X =>在列表<X>:如何讓列表x的位置

Dict<string, X> d = lx.ToDictionary(x => F(Z.g(x).ToString()), x => x) 

其中Z是一種靜態成員函數Y g(X x)其中Y是實現ToString的類型。

現在我將Y g(X x)更改爲Y g(X x, T t),其中T是某種類型。假設我有一個List<T> ltCountlx。我想我的前行變成(警告,僞代碼)線:

Dict<string, X> d = lx.ToDictionary(x => F(Z.g(x, something).ToString()), x => x) 

其中表達something我進去lxx的指數i,指數到我聯想lt[i]

+2

請做一個實際的[mcve],你的縮寫方法名稱和變量使你的代碼很難解析。爲什麼縮寫'Dict'? – DavidG

+0

@CodeCaster如果它是重複的,我會很高興看到最初的同一個問題,因爲我沒有找到它後找到它...... Thx在事先 –

+0

在您問題的頂部的黃色框。 – CodeCaster

回答

0

您可以使用Select到集合中獲得該項目的索引:

lx.Select((item, index) => new { Item = item, Index = index }) 
    .ToDictionary(...); 

我在這裏構建一個匿名類型來保存這兩個項目和指標,您可以在下面的lambda表達式使用。

+0

即使'lt [i]'出現在'lt'中的多個位置,它會給我正確的索引嗎? ('T = string'在我的情況下。) –

+1

@ ujsgeyrr1f0d0d0r0h1h0j0j_juj:這只是遍歷列表併爲每個項目創建一個元組(項目,索引)。所以列表中的每個項目都會被處理,是的。 – Groo

+0

不知道這是什麼意思。你能測試這段代碼,看看你是否期望這是什麼? –

相關問題