在返回方法调用之前更新本地iqueryable列表

时间:2014-05-23 16:35:07

标签: c# linq collections foreach

在我的原始帖子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();

1 个答案:

答案 0 :(得分:2)

您需要使用ToList 首先迭代并修改内存列表并返回。

目前您的ResultIQueryable (更像是查询)尚未执行。

你可以这样做:

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;