在另一个列表中添加列表项

Kur*_*ion 2 c# list nested-lists

好的,我有一个类似于以下的课程......

public class Order
{
    private Guid id;
    [DataMember]
    public Guid ID
    {
        get { return id; }
        set { id = value; }
    }

    private List<Items> orderItems;
    [DataMember]
    public List<Items> OrderItems
    {
        get { return orderItems; }
        set { orderItems= value; }
    }

}

public class Items
{
    private string itemName;
    [DataMember]
    public string ItemName
    {
        get { return itemName; }
        set { itemName = value; }
    }

}
Run Code Online (Sandbox Code Playgroud)

当我在我的代码中引用时,我有一个方法,它接受一个"Order"列表作为参数.

ACME.Order newOrder = new ACME.Order();
ACME.Items newItems = new ACME.Items();

newOrder.ID = xxx
newItems.ItemName = xxx

SendOrderWithItemsFunction(newOrder)
Run Code Online (Sandbox Code Playgroud)

以上工作正常但我没有为我的项目添加功能,所以我可以做类似以下的事情

newOrder.Items.Add(newItem);
Run Code Online (Sandbox Code Playgroud)

newOrder.Items = newItems
Run Code Online (Sandbox Code Playgroud)

将无法工作,因为它说它不能隐式地将newOrder.Items转换为newItems [].

什么是失踪?

Chr*_*man 5

我想我可能会遗漏一些东西,但是newOrder.OrderItems.Add(newItem)应该工作得很好,根据你的帖子中的说法.

只是其他一些挑剔的事情:

如果只是单个项目,"Items"类的复数很奇怪.这可能是将单个项目分配给List属性看起来"ok"的原因.

您可能已经将其从帖子中删除了,但是WCF序列化的每个类都必须标记为"DataContract",而不仅仅是类的成员.

在初始化像这样的对象时,我认为使用Type Initializers会更加清晰:

var NewOrder = new ACME.Order{
     ID = xxx,
     OrderItems = new List<ACME.Item>
     {
          new ACME.Item{
               ItemName = xxx
          }
     }
};
Run Code Online (Sandbox Code Playgroud)