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