如何为 IEnumerable 赋值

问题描述 投票:0回答:2

我有以下课程,其中有一个

IEnumerable
列表如下

public class Orders
{
    public string No { get; set; }
    public string Id { get; set; }
    public IEnumerable<string> OrderTypes { get; set; } = new List<string> { "order 1", "order 2", "order 3" }
}

我可以不直接在上面分配值,而是可以将其放入单独的类中,如下所示

public class OrderTypes()
{
    IEnumerable<string> myEnumerable = new List<string>()
    myEnumerable.add("Order 1")
    myEnumerable.add("Order 3")
    myEnumerable.add("Order 4")
    myEnumerable.add("Order 5")
    myEnumerable.add("Order 6")
}

然后像上面那样调用这个函数

public class Orders
{
     public string No { get; set; }
     public string Id { get; set; }
     public IEnumerable<string> OrderTypes { get; set; } = OrderTypes
}

这样做的原因是因为我的列表太长,这样更容易查看,但我不知道如何实现这一点。

c# linq ienumerable
2个回答
3
投票

足够接近。您可以简单地使用静态方法:

public class Orders
{
  public string No {get;set;}
  public string Id {get;set;}
  public IEnumerable<string> OrderTypes{get;set;} = CreateOrderTypes();

  private static IEnumerable<string> CreateOrderTypes()
  {
     return new List<string>
     {
       "Order 1",
       "Order 3",
       "Order 4",
       "Order 5",
       "Order 6",
     };
   }
}

当然,

CreateOrderTypes
不必在同一个班级,可以移动到不同的班级。第二个类必须对第一个类可见。

public class Orders
{
  public string No {get;set;}
  public string Id {get;set;}
  public IEnumerable<string> OrderTypes{get;set;} = OrderTypesFactory.InitOrderTypes();
}

static class OrderTypesFactory
{
  static IEnumerable<string> InitOrderTypes()
  {
     return new List<string>
     {
       "Order 1",
       "Order 3",
       "Order 4",
       "Order 5",
       "Order 6",
     };
   }
}

1
投票

如果我正确理解了这个问题,你可以有一个类

Orders
的构造函数,然后当你实例化该类时,你可以在其中传递 IEnumerable 的值并分配该值。所以它看起来像:

public class Orders
{
    public string No { get; set; }
    public string Id { get; set; }
    public IEnumerable<string> OrderTypes { get; set; }

    public Orders(IEnumerable<string> orderTypes)
    {
        OrderTypes = orderTypes;
    }

}

public class Main
{
    public void Main()
    {
        var orderTypes = new List<string>() { "Your", "values", "Here" };
        var orders = new Orders(orderTypes);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.