C# – 使用lambda表达式或LINQ填充列表
发布时间:2020-12-15 20:53:20 所属栏目:百科 来源:网络整理
导读:已经有一段时间了,因为我已经使用了lambda表达式或LINQ,并且想知道我将如何使用这两种方法执行以下操作(我知道我可以使用foreach循环,这只是出于好奇). 我有一个字符串路径数组(如果这是一个数组或列表,它会有所不同吗?)我想从中返回一个只有文件名的新列表
已经有一段时间了,因为我已经使用了lambda表达式或LINQ,并且想知道我将如何使用这两种方法执行以下操作(我知道我可以使用foreach循环,这只是出于好奇).
我有一个字符串路径数组(如果这是一个数组或列表,它会有所不同吗?)我想从中返回一个只有文件名的新列表. 即使用foreach循环,它将是: string[] paths = getPaths(); List<string> listToReturn = new List<string>(); foreach (string path in paths) { listToReturn.add(Path.GetFileName(path)); } return listToReturn; 我如何用lambda和LINQ做同样的事情? 编辑:在我的情况下,我使用返回的列表作为ListBox(WPF)的ItemsSource所以我假设它将需要是一个列表而不是IEnumerable? 解决方法
您的主要工具是.Select()方法.
string[] paths = getPaths(); var fileNames = paths.Select(p => Path.GetFileName(p));
不,数组也实现IEnumerable< T> 请注意,此最小方法涉及延迟执行,这意味着fileNames是IEnumerable< string>并且只有在从中获取元素时才开始迭代源数组. 如果你想要一个List(为了安全),请使用 string[] paths = getPaths(); var fileNames = paths.Select(p => Path.GetFileName(p)).ToList(); 但是当有许多文件时,您可能希望通过使用延迟执行源来反向(使结果交错,更快): var filePaths = Directory.EnumerateFiles(...); // requires Fx4 var fileNames = filePaths.Select(p => Path.GetFileName(p)); 这取决于你接下来要用fileNames做什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- crossdomain.xml文件作用与原理
- 如何批量更新oracle pl / sql中的大表以避免耗尽undospace?
- hybrid开发模式
- c# – 自定义MembershipProvider初始化方法
- Binary XML file line #10: Error inflating class android
- ruby-on-rails – 我可以从控制器返回值而不是视图吗?
- Stax处理XML(二)——基于迭代模型的查找和过滤器的使用
- Reactjs事件处理的三种写法
- u-boot-2011.03在TQ2440上的移植(3)--支持norflash启动 .
- SQLite(FMDB) 线程安全 - 多线程处理