如何简洁提取类列表字段生成字符串列表?若有同类问题请指引
更简洁的集合字段提取实现方式
嗨,这问题我太熟了!你想要的这种简洁写法完全可以通过LINQ轻松实现,这也是.NET生态里处理集合转换最常用的方案~
首先要确保你的代码里引用了System.Linq命名空间(如果没加的话,LINQ的扩展方法会找不到哦),然后直接用下面的写法替代你的foreach循环:
List<string> values = AllTheClasses.Select(workingClass => workingClass.SomeField).ToList();
简单解释下逻辑:
Select()方法会遍历AllTheClasses集合里的每一个MyClass对象,通过lambda表达式workingClass => workingClass.SomeField把每个对象转换成它的SomeField属性值;- 最后调用
ToList()把转换后的结果直接包装成List<string>类型,一步到位完成你原来循环里的所有操作。
如果想让代码更简短(其实可读性已经很好了),还可以用更紧凑的lambda参数命名,比如:
List<string> values = AllTheClasses.Select(x => x.SomeField).ToList();
要是SomeField是一个无参数的方法(而非属性),还能直接用方法组的写法进一步简化:
// 假设MyClass里有string SomeField()方法 List<string> values = AllTheClasses.Select(MyClass.SomeField).ToList();
这种LINQ写法不仅比foreach循环更简洁,可读性也更强——别人一眼就能看懂你是从集合里提取某个字段生成新列表,完全符合你想要的“简洁写法”需求~
内容的提问来源于stack exchange,提问作者WynDiesel
相关产品推荐
相关产品推荐

