在LINQ to objects中,如果对象属性等于“folder”,如何将其设置为null?

5

我有一组表示文件夹结构的对象。

如果它是一个文件夹,我想将属性FileExtension设置为null。

这是我目前的进展。 有人可以帮忙吗?

var items = MyClass.All().ToList();
items.ForEach(x => x.FileExtension = string.empty)
     .Where(y => y.FileExtension == "folder")
     .ToList();
2个回答

7
items
  .Where(i => i.FileExtension == "folder")
  .ToList()
  .ForEach(i => i.FileExtension = null);

我正在尝试只使用LINQ - 真是太完美了!谢谢 - Frank
挑剔一点的说,ToList() 不是 Linq;它是一个泛型列表方法。尽管有些人反对在 Linq 中使用 foreach,但这似乎仍然是一种可接受的方式。https://dev59.com/GHVC5IYBdhLWcg3wtzyt 和 https://dev59.com/onVD5IYBdhLWcg3wE3No。最清晰且没有副作用的方法往往是老旧的 foreach 循环,就像 @TcKs 的答案一样。 - goodeye
更挑剔一些:System.Linq.Enumerable.ToList <-- 如果它“不是Linq”,那么为什么在Linq命名空间中呢,嗯嗯? - Amy B
抱歉,打错了 - 是的,因为我很挑剔 - 不是Linq,而是泛型列表方法的ForEach。那就是我想说的。 - goodeye

6
foreach(var item in items.Where( i => i.FileExtension == "folder" ))
    item.FileExtension = null;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接