C# 向列表中添加新对象无效

C# 向列表中添加新对象无效,c#,C#,我正在尝试将一个新的OldFlatFile添加到OldFlatFileList中,它可以工作,但不能添加新的。我看不到错误,也不知道下面的代码是否有问题 OldFlatFileList计数与添加前后相同: var selectedPackage = FlatFileHelper.GetSelectedPackage(OldFlatFileList); var primaryFeature = new PrimaryFeatures(){ DataTypeCode = "abc"

我正在尝试将一个新的
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 OldFlatFileList
{
获取{返回会话[SystemConstant.OldFlatFileListKey]作为列表;}
设置{Session[SystemConstant.OldFlatFileListKey]=value;}
}

公共类OldFlatFile:列表
{}

OldFlatFileList.ToList()
创建列表的新实例(其中将包含原始列表中项目的副本)。然后将新对象添加到新列表中,但不在任何变量中保存对新列表的引用。因此,带有添加项的新列表将由垃圾收集器简单地收集。原始列表将保持不变(因为您没有向其中添加项目)

因此,您不能将项添加到
IEnumerable
类型的变量(它只支持枚举),我建议您将
OldFlatFileList
属性类型更改为
List
,或
IList
IColdCollection
。然后简单地打电话:

 OldFlatFileList.Add(new OldFlatFile { ... });
这将修改您的原始列表

    public class OldFlatFile : List<OldFlatFileEntry>
    {}
 OldFlatFileList.Add(new OldFlatFile { ... });