我正在尝试将新的OldFlatFile
添加到OldFlatFileList
,但不能添加新的OldFlatFileList
。我看不到错误,我不知道下面的代码是否有问题?
var selectedPackage = FlatFileHelper.GetSelectedPackage(OldFlatFileList);
var primaryFeature = new PrimaryFeatures(){ DataTypeCode = "abc" };
OldFlatFileList.ToList().Add(
new OldFlatFile
{
new OldFlatFileEntry
{
InformationFields = selectedPackage.InformationFields,
PrimaryFeatures = primaryFeature,
SecondaryFeatures = null
}
});
计数与添加前后相同:
private IEnumerable<OldFlatFile> OldFlatFileList
{
get { return Session[SystemConstant.OldFlatFileListKey] as List<OldFlatFile>; }
set { Session[SystemConstant.OldFlatFileListKey] = value; }
}
public class OldFlatFile : List<OldFlatFileEntry>
{}
{{1}}
答案 0 :(得分:13)
OldFlatFileList.ToList()
创建新的列表实例(将包含原始列表中的项目副本)。然后,您将新对象添加到该新列表,但不保存对任何变量中的新列表的引用。所以添加项目的新列表将由垃圾收集器收集。原始列表将保持不变(因为您没有添加项目)。
因此,您无法将项添加到IEnumerable<T>
类型的变量(它仅支持枚举),我建议您将OldFlatFileList
属性类型更改为List<OldFlatFile>
或{{1} }或IList<OldFlatFile>
。然后简单地致电:
ICollection<OldFlatFile>
这将修改您的原始列表。