返回Map中Key属性的IEnumerable



假设我有以下类:

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

最新更新