簡體   English   中英

訪問F#列表 <List<> &gt;從C#代碼內部

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM