3
我有一個關於IronPython中的使用方法的問題。假設我有一些集合,然後從該集合創建IronPython匿名類型,並且我想遍歷該集合。我的代碼如下所示:IronPython中的LINQ
listInt = List[int]([0, 1, 2, 3, 4])
firstCollection = listInt.Select(lambda(v): type('SomeType', (object,),{"TypeValue": v*v, "TypeIndex": v})())
enumeratorFirst = IEnumerable[object].GetEnumerator(firstCollection)
while enumeratorFirst.MoveNext():
item = enumeratorFirst.Current
此代碼正常工作。但是當我使用索引合併的Select方法時,我得到錯誤:'int'對象不可迭代。
我的代碼如下所示:
listInt = List[int]([0, 1, 2, 3, 4])
secondCollection = listInt.Select(lambda(v, i): type('SomeType', (object,), {"TypeValue": v*v, "TypeIndex": i})())
enumeratorSecond = IEnumerable[object].GetEnumerator(secondCollection)
while enumeratorSecond.MoveNext():
item = enumeratorSecond.Current
誰能爲我提供一些幫助?爲什麼第二種情況有錯誤?
PS:對於接口的使用我看了看這裏:Interface In IronPython.對於匿名類型的使用我看了看這裏:Anonymous objects in Python.
嗨@PRMoureu,感謝您的幫助,將嘗試此解決方案,謝謝!對不起提及我使用的模塊。爲了能夠訪問.NET類型,我只導入了clr和System,然後添加了對System.Core.dll的引用。要訪問List類,我使用了System.Cllections.Generic命名空間。爲了使用Enumerable擴展,我從System.Linq命名空間導入了擴展。此代碼的僞代碼如下所示:從System.Collections.Generic import *導入系統,clr.AddReference('System.Core'),clr.ImportExtensions(System.Linq),從System.Linq導入* –
Bill