将字符串连接实用函数转换为LINQ等效函数
本文关键字:函数 LINQ 转换 连接 字符串 | 更新日期: 2023-09-27 18:16:36
所以我有一个辅助函数,它接受一个特定的列表,执行一个循环并返回一个用逗号连接的字符串,没有重复。
public static string GetJoinedEquipString(List<MeasuredData> dataList)
{
HashSet<string> equipSet = new HashSet<string>();
foreach (MeasuredData data in dataList)
{
equipSet.Add(data.GetEquipNumString());
}
return String.Join(",", equipNumSet.ToArray());
}
这工作得很好…但是有没有一种方法来重写这个丑陋的函数使用LINQ?
尝试:
string.Join(",", dataList.Select(d => d.GetEquipNumString()).Distinct().ToArray());
与其使用HashSet
来使列表唯一,不如看看这里记录的Distinct
。这将为string
使用默认的相等比较器(就像您的实现一样),但是如果您使用更复杂的对象,也会有一个接受IEqualityComparer
的过载。
如果你使用的是。net 4.0或更新版本,你可以不调用ToArray
,因为添加了Join
的重载,其中有一个IEnumerable<string>
作为参数(而不是只有string[]
)。