假设我有以下类:
public class X
{
public string a;
public string b;
}
public class Y
{
public string c;
}
and I have a Map:
var myMap = Map<X, Y>();
我如何从这个返回a
(IEnumerable<string>
)的列表?
我想写:
myMap.Keys.Select(_ => _.a);
但是这行不通。我错过了什么?
只要您使用System.Linq
,您编写的代码实际上就可以正常工作。但是,如果您想创建一个非空映射,那么您的键类(X
)也必须从Record<T>
派生,如下所示:
using System;
using System.Linq;
using LanguageExt;
using static LanguageExt.Prelude;
public class X : Record<X>
{
public string a;
public string b;
public static X Create(string a, string b)
=> new X() { a = a, b = b };
}
public class Y
{
public string c;
public static Y Create(string c)
=> new Y() { c = c };
}
class Program
{
static void Main(string[] args)
{
var myMap =
Map(
(X.Create("a1", "b1"), Y.Create("c1")),
(X.Create("a2", "b2"), Y.Create("c2")));
foreach (var str in myMap.Keys.Select(_ => _.a))
{
Console.WriteLine(str);
}
}
}
输出是:
a1
a2