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());

HashSetリストを一意にするためにa を使用する代わりに、ここDistinctに記載されている を参照してください。これは(実装と同様に)デフォルトの等値比較子を使用しますが、より複雑なオブジェクトを使用している場合は、を受け入れるオーバーロードもあります。stringIEqualityComparer

.NET 4.0 以降を使用している場合は、(単に ではなく) をパラメーターとして持つToArrayのオーバーロードJoinが追加されたため、 への呼び出しを省略できます。IEnumerable<string>string[]

于 2013-06-04T01:14:15.193 に答える