请简化以下代码 string[] pms = Directory.GetDirectories(dataLogPath); for (int p = 0; p < pms.Length; p++) { pms[p] = pms[p].Split('\\').Last(); }
时间: 2024-02-14 15:16:19 浏览: 130
这段代码可以简化为:
```
string[] pms = Directory.GetDirectories(dataLogPath)
.Select(path => Path.GetFileName(path))
.ToArray();
```
使用 LINQ 中的 `Select` 方法,将每个路径转换为它的最后一个文件夹名称,然后使用 `ToArray` 方法将结果存储在一个字符串数组中。这样可以避免使用循环和 `Split` 方法。
相关问题
请优化以下代码 Dictionary<string, string> pmsDic = new Dictionary<string, string>(); List<string> pms = Directory.GetDirectories(dataLogPath).Select(path => Path.GetFileName(path)).ToList(); List<string> pmPath = Directory.GetDirectories(dataLogPath).ToList(); for (int i = 0; i < pms.Count; i++) { pmsDic.Add(pmPath[i], pms[i]); }
可以使用 LINQ 的 Zip 方法来简化代码,如下所示:
```
Dictionary<string, string> pmsDic = Directory.GetDirectories(dataLogPath)
.Select(path => new { Path = path, Name = Path.GetFileName(path) })
.ToDictionary(x => x.Path, x => x.Name);
```
此代码首先使用 `Select` 方法将每个目录路径和其名称投影为一个匿名类型,然后使用 `ToDictionary` 方法将它们转换为 `Dictionary<string, string>` 类型。这样可以避免使用两个列表和循环来构建字典。
public string LogDir { get { return currDir; } } public ILogNet SystemLog { get { return GetLog("System"); } } public ILogNet TaskLog { get { return GetLog("Task"); } } public ILogNet DeviceLog { get { return GetLog("Device"); } } public ILogNet TibcoLog { get { return GetLog("Tibco"); } } private CLog() { string s = System.Reflection.Assembly.GetExecutingAssembly().Location; FileInfo finfo = new FileInfo(s); string currPath = finfo.DirectoryName; currDir = Path.Combine(currPath, "PMS", "Log"); DirectoryInfo dir = new DirectoryInfo(currDir); if (!dir.Exists) { dir.Create(); } }
这段代码是一个单例模式的CLog类,提供了一个记录日志的功能。LogDir是一个只读属性,返回当前日志文件目录的路径。SystemLog、TaskLog、DeviceLog和TibcoLog都是只读属性,分别返回ILogNet类型的System、Task、Device和Tibco的日志实例。ILogNet是一个接口,包含了写日志的方法。GetLog(string logName)方法用于获取指定名称的ILogNet实例,如果该实例不存在,则创建一个新的ILogNet实例并返回。在CLog的构造函数中,获取了程序集所在的路径,并创建了一个PMS\Log的子目录,用于存放日志文件。如果该目录不存在,则创建该目录。
阅读全文