1

所以我有一个辅助函数,它接受一个特定的列表,执行一个循环并返回一个用逗号连接而没有重复的字符串。

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 重写这个看起来很丑的函数?

4

1 回答 1

3

尝试:

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

不要使用 aHashSet来使列表独一无二,而是查看Distinct, 记录在这里。这将使用默认的相等比较器(就像您的实现一样),但是如果您曾经使用更复杂的对象string,也有一个接受的重载。IEqualityComparer

如果您使用的是 .NET 4.0 或更高版本,则可以停止调用 to,因为添加了具有 a作为参数ToArray的重载(而不是 just )。JoinIEnumerable<string>string[]

于 2013-06-04T01:14:15.193 回答