从数组中获取不同的输出

时间:2014-04-18 07:49:33

标签: c# arrays string

来自字符串数组

string[] str1={"u1-u2","u1-u2","u1-u4","u4-u1"};
string[] str2 = str1.Distinct().ToArray(); 

数组中的不同元素是:"u1-u2""u1-u4""u4-u1"

但我必须得到不同的输出:"u1-u2""u1-u4"

所以请帮帮我

2 个答案:

答案 0 :(得分:2)

你可以这样做:

string[] output = str1.Select(s => new { Value = s, NormalizedValue = string.Join("-", s.Split('-').OrderBy(_ => _)) })
                      .GroupBy(p => p.NormalizedValue)
                      .Select(g => g.OrderBy(p => p.Value).First().Value)
                      .ToArray();

答案 1 :(得分:1)

您可以将所有值转换为其标准化形式,并将其转换为Distinct()

string[] output = str1.Select(string.Join("-", s.Split('-').OrderBy(x => x)))
                      .Distinct()
                      .ToArray();

(这是基于Ulugbek Umirov's answer的代码。)