我想添加一个新的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>
{}
OldFlatFileList.ToList()
创建列表的新实例(将具有原始列表中项目的副本)。然后,您要将新对象添加到该新列表中,但没有在任何变量中保存对新列表的引用。因此,带有添加项的新列表将仅由垃圾收集器收集。原始列表将保持不变(因为您没有向其中添加项目)。
因此,您不能将项目添加到IEnumerable<T>
类型为变量的变量中(它仅支持枚举),建议您将OldFlatFileList
属性类型更改为List<OldFlatFile>
,或IList<OldFlatFile>
或ICollection<OldFlatFile>
。然后只需调用:
OldFlatFileList.Add(new OldFlatFile { ... });
这将修改您的原始列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句