替换列表值而不循环

时间:2017-03-16 03:21:12

标签: linq

IList<Item> items = new List<Item>();
items.Add(new Item
{
     tag = "{" + Ann + "}",
     value = "Anny"
});

items.Add(new Item
{
     tag = "{" + John + "}",
     value = "Johnny"
});

如何使用Linq选择带有{John}的标签并将值替换为“Jane”?

2 个答案:

答案 0 :(得分:0)

LINQ,顾名思义,更多的是查询工具。因此,您可以使用LINQ从集合中获取要修改的特定项目,但修改本身超出了LINQ范围。

假设您的条件总是最多匹配一次,您可以执行以下操作:

var john = items.FirstOrDefault(o => o.tag == "{John}");
if(john != null)
{
    john.value = "Jane";
}

否则,您可以使用LINQ Where(o => o.tag == "{John}")来获取要修改的目标项。但是,您需要遍历结果以实际更新每个匹配项的值。

答案 1 :(得分:0)

items.Where(o => o.tag == "{"+John+"}").ToList().ForEach(item =>{
        item.value = "Jane";
        });

Here is working fiddle