将字符串连接实用函数转换为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?

将字符串连接实用函数转换为LINQ等效函数

尝试:

string.Join(",", dataList.Select(d => d.GetEquipNumString()).Distinct().ToArray());

与其使用HashSet来使列表唯一,不如看看这里记录的Distinct。这将为string使用默认的相等比较器(就像您的实现一样),但是如果您使用更复杂的对象,也会有一个接受IEqualityComparer的过载。

如果你使用的是。net 4.0或更新版本,你可以不调用ToArray,因为添加了Join的重载,其中有一个IEnumerable<string>作为参数(而不是只有string[])。