我有这堂课:
ActiveCampaign
{
public Campaign campaign;
public IEnumerable<CampaignView> Views;
}
ac的类型为ActiveCampaign[]
以下代码执行时没有任何错误,但没有任何内容添加到其视图中。我在这里错过了什么?
ac.FirstOrDefault(a => a.Campaign.Id == c.Id).Views.ToList().Add(cv);
答案 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核心中可用)来创建枚举视图项目以及添加。