将项添加到数组的子数组不起作用

时间:2016-03-10 12:48:08

标签: c# linq

我有这堂课:

ActiveCampaign
{
     public Campaign campaign;
     public IEnumerable<CampaignView> Views;
}

ac的类型为ActiveCampaign[]

以下代码执行时没有任何错误,但没有任何内容添加到其视图中。我在这里错过了什么?

ac.FirstOrDefault(a => a.Campaign.Id == c.Id).Views.ToList().Add(cv);

2 个答案:

答案 0 :(得分:2)

当您致电ToList()时,您需要创建一个单独的列表;您没有添加到ac。您需要指定返回值:

List<ActiveCampaign> newList = ac.FirstOrDefault(a => a.Campaign.Id == c.Id).Views.ToList();

然后你可以使用它......

newList.Add(cv);

答案 1 :(得分:1)

您正在创建一个新列表,该列表是Views属性的副本,然后添加到该属性,然后将该列表丢弃。

如果要永久影响视图,请将其设置为List或IList类型并直接添加到其中。

如果你想看到视图加上那个新项目,那么在添加之前将列表放入变量中,或者使用Concat(或者甚至更好的附加,尽管它目前只在dotnet核心中可用)来创建枚举视图项目以及添加。