我正在尝试将一个新的 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 { ... });
这将修改您的原始列表。
关于c# - 将新对象添加到列表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858539/