【问题标题】:Return IEnumerable of a property of the Key in a Map返回 Map 中 Key 的属性的 IEnumerable
【发布时间】:2021-06-04 06:21:39
【问题描述】:

假设我有以下课程:

public class X
{
  public string a;
  public string b;
}

public class Y
{
  public string c;
}

我有一张地图:

var myMap = Map<X, Y>();

如何从中返回a (IEnumerable&lt;string&gt;) 的列表?

我正在写:

myMap.Keys.Select(_ => _.a);

但这行不通。我错过了什么?

【问题讨论】:

    标签: language-ext


    【解决方案1】:

    只要您使用System.Linq,您编写的代码实际上就可以正常工作。但是,如果您想创建一个非空映射,您的键类 (X) 也必须从 Record&lt;T&gt; 派生,如下所示:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2021-11-23
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多