这是我之前的帖子的扩展.我认为访问a List<List<>>与简单列表非常相似,但我有一些问题.
这是F#代码:
type X =
{
valuex : int
}
let l =
[
for i in 1 .. 10 ->
[
for j in 1 .. 10 ->
{valuex = i * j}
]
]
Run Code Online (Sandbox Code Playgroud)
根据我之前的帖子,我尝试在C#代码中执行以下操作:
IList<IList<MyModule.X>> list = MyModule.l.ToList();
Run Code Online (Sandbox Code Playgroud)
但这不编译.
有人这是我的错误吗?
在这种情况下,属性的类型是,FSharpList<FSharpList<MyModule.X>>因此您必须将每个内部FSharpList映射到a IList<T>,然后将结果序列具体化为列表(列表).
这看起来像:
IList<IList<MyModule.X>> list = MyModule.l
.Select(inner => (IList<MyModule.X>) inner.ToList())
.ToList();
Run Code Online (Sandbox Code Playgroud)
你真的需要所有这些精确的转换吗?这个系列已经IEnumerable<IEnumerable<T>>足够好了吗?事实上,FSharpList<T>C#本身就是一个非常实用的类型,所以除非绝对必要,否则我会远离这些转换.
编辑:
如果你只需要迭代元素,你需要的只是一个循环:
foreach(var innerList in MyModule.l)
{
foreach(var item in innerList)
{
Console.WriteLine(item.valuex);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |