在我的原始帖子Using Foreach on iQueryable List find value if in 2nd List的后续问题中,我无法找到解决方案,当我使用foreach循环进行更改时,它会更新本地列表。通过我的visual studio调试器,如果在LookForMe列表中找到当前项,它会更新item.LinkURL值。但是当将Results.ToList()返回给我的调用方法时,此更新不在返回的集合中。如何在返回之前将这些保存到结果列表中?没有看到任何类似于Results.Update()或Results.Save()的intellisense。
foreach (var item in Results)
{
if (LookForME.Any(fs => item.LinkUrl.Contains(fs)))
{
item.LinkUrl = ServerPath + "/" + item.LinkUrl;
// works great until its time to return the updated Results list
}
// something here to update results with new value?
}
return Results.ToList();
答案 0 :(得分:2)
您需要使用ToList
首先迭代并修改内存列表并返回。
目前您的Result
是IQueryable
(更像是查询)尚未执行。
你可以这样做:
var newList = Result.ToList(); //get a in-memory list
foreach (var item in newList) //modify in-memory list
{
if (LookForME.Any(fs => item.LinkUrl.Contains(fs)))
{
item.LinkUrl = ServerPath + "/" + item.LinkUrl;
// works great until its time to return the updated Results list
}
// something here to update results with new value?
}
return newList;