C#:将项目添加到列表时复制对象

C#:将项目添加到列表时复制对象,c#,list,sharepoint,sharepoint-2010,web-parts,C#,List,Sharepoint,Sharepoint 2010,Web Parts,我正在开发一个SharePoint Web部件,它需要使用LINQ检索数据。我需要将结果放在列表类型的对象上,这样我就可以在中自由地使用结果 但问题是,对于声明的C#List类型,其上铸造了一个自定义对象;对于添加到列表中的每个新项目,先前添加的对象都会更改为刚进入列表的对象的最新值 以下是我所写内容的示例代码: List<ItemEntity> LocalItemList = new List<ItemEntity>(); var linqQuery = from i

我正在开发一个SharePoint Web部件,它需要使用LINQ检索数据。我需要将结果放在列表类型的对象上,这样我就可以在中自由地使用结果

但问题是,对于声明的C#List类型,其上铸造了一个自定义对象;对于添加到列表中的每个新项目,先前添加的对象都会更改为刚进入列表的对象的最新值

以下是我所写内容的示例代码:

List<ItemEntity> LocalItemList = new List<ItemEntity>();

var linqQuery = from item in LinqList;
                where item.Expire > DateTime.Now
                select new
                {
                    item.Title,
                    item.Message
                }

foreach (var retrievedItem in linqQuery){
    //this is an entity class object, "tempItemEntity".
    ItemEntity tempItemEntity = new ItemEntity();

    tempItemEntity.Author = retrievedItem.Title;
    tempItemEntity.Message = retrievedItem.Message;

    LocalItemList.Add(tempItemEntity);
}

/* From here on is my test printing loop to see the returned result. The results are shown below. */
返回的结果

相反,这些是返回的结果

LocalItemList[0] = "Title3" + "Message3"
LocalItemList[1] = "Title3" + "Message3"
LocalItemList[2] = "Title3" + "Message3"
在我看来,对于添加到列表中的每个新项目,以前的索引都会更新并更改为最新添加的项目。为什么会这样

如果你说的对象引用不正确,请纠正我

p、 显然,如果列表不是以下面的方式铸造的,
List
,而是以这种方式铸造的,
List
,结果是正确的


更新

我在论坛中搜索,发现以下问题与我有类似的问题:

  • 但我无法实现链接1中给出的答案中可能的解决方案



    谢谢你抽出时间

    您的
    linqQuery
    变量是否包含正确的值?@keyboard p是的,它在
    linqQuery
    中包含正确的值。我已经对它进行了测试,
    linqQuery
    返回了正确的结果;但是我想将信息插入(C#)列表中。错误可能在您的测试打印循环中。@shamp00:不太可能。实际上,当
    是其他类型(如
    List…
    List…
    )时,它可以正常工作!但不是
    List…
    您在linqQuery中尝试过ToList()吗?
    LocalItemList[0] = "Title3" + "Message3"
    LocalItemList[1] = "Title3" + "Message3"
    LocalItemList[2] = "Title3" + "Message3"