繁体   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