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