[英]Accessing an F# List<List<>> from inside C# code
這是我以前的線程的擴展。 我以為訪問List<List<>>
與一個簡單的列表非常相似,但是我有一些問題。
這是F#代碼:
type X =
{
valuex : int
}
let l =
[
for i in 1 .. 10 ->
[
for j in 1 .. 10 ->
{valuex = i * j}
]
]
根據我以前的文章,我嘗試在C#代碼中執行以下操作:
IList<IList<MyModule.X>> list = MyModule.l.ToList();
但這不能編譯。
有人可以幫我嗎?
在這種情況下,屬性的類型為FSharpList<FSharpList<MyModule.X>>
因此,您必須將每個內部FSharpList映射到IList<T>
,然后將結果序列具體化到列表(列表)中。
看起來像:
IList<IList<MyModule.X>> list = MyModule.l
.Select(inner => (IList<MyModule.X>) inner.ToList())
.ToList();
您真的需要所有這些精確轉換嗎? 集合已經足夠是IEnumerable<IEnumerable<T>>
了嗎? 實際上, FSharpList<T>
本身是C#中相當有用的類型,因此除非絕對必要,否則我將不進行這些轉換。
編輯 :
如果只需要迭代元素,則只需一個循環即可:
foreach(var innerList in MyModule.l)
{
foreach(var item in innerList)
{
Console.WriteLine(item.valuex);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.