2010-03-15 40 views
1

Python的相當於我想要的是:請在LINQ字典理解,C#幫助

>>> #C#: Dictionary<int, string> tempDict = ... 
>>> tempDict = {i : str(i) for i in range(200000)} 
>>> tempDict[5] 
'5' 
>>> 

的例子是有點簡化,但我可以改變我自己;不想打擾你與專有類的細節。

明白了:

var y = (from x in Enumerable.Range(0, 20000) select Guid.NewGuid()).ToDictionary(g=>g, g=>new MyObj(g)) 
+0

也許寫下你想要的文字給我們誰不知道python :) – 2010-03-15 21:03:46

+0

一本字典,如1:'1',2:'2'等。 但是,我原來的要求已經改變了一下。我實際上需要創建一個guid字典:對象,其中...創建一個對象,我必須有一個GUID。用正常的循環,我會使用一個臨時變量。我不認爲lambda允許我也這樣做。如果情況並非如此,請告訴我。謝謝! – 2010-03-15 21:09:45

回答

9
Enumerable.Range(0, 200000).ToDictionary(x => x, x => x.ToString()) 

可能?

+0

謝謝。現在......如果我不想使用索引呢?關鍵必須是Guid guid = Guid.NewGuid(),並且值是...說guid.ToString()或myFunc(guid) - 重點是A)Guids由系統給我,B)該值取決於密鑰(guid)。獲得一個guid生成器然後將其轉換爲字典是否有意義?我知道單行者可能會變得很醜,但我正在學習LINQ,並且很好奇,如果可能的話。謝謝。 – 2010-03-15 21:13:33

+0

我想我想要的東西就像Enumerable.Repeat (()=> Guid.NewGuid(),200000),除了Repeat不需要lambda而是一個值。此外,我不想使用中間ToList - 我想保留IEnumerable的東西,直到我需要生成實際的字典。 – 2010-03-15 21:17:42

+0

嗯,聽起來你最好寫一個生成200k GUID的枚舉器。您可以在ToDictionary調用中輕鬆地執行諸如myfunc(guid)之類的操作。 – Joey 2010-03-15 21:23:04