我正在开发一个SharePoint webpart,它需要使用LINQ检索数据。我需要将结果放在List类型的对象上,以便我可以自由地使用结果。
但问题是,对于声明的C#List-type,其上有一个自定义对象;对于添加到列表中的每个新项目,先前添加的对象已更改为刚刚进入列表的对象的最新值。
以下是我写的代码示例:
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. */
这是从List打印的结果,“LocalItemList”:
预期结果
这些是我期待的结果。
LocalItemList[0] = "Title1" + "Message1"
LocalItemList[1] = "Title2" + "Message2"
LocalItemList[2] = "Title3" + "Message3"
返回结果
相反,这些是返回的结果。
LocalItemList[0] = "Title3" + "Message3"
LocalItemList[1] = "Title3" + "Message3"
LocalItemList[2] = "Title3" + "Message3"
在我看来,对于添加到列表中的每个新项目,先前的索引都会更新并更改为最新添加的项目。为什么会这样?
如果您正在谈论对象引用不正确,请纠正我。
P.S。显然,如果列表未按以下方式投放,List<Object>
,而是List<String>
,则结果是正确的。
更新
我在论坛上搜索并发现以下与我有类似问题的问题:
但是我在链接#1中给出的答案中实现可能的解决方案时遇到了问题。
感谢您的时间!