Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数组中获取不同的输出_C#_Arrays_String - Fatal编程技术网

C# 从数组中获取不同的输出

C# 从数组中获取不同的输出,c#,arrays,string,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” 所以请帮帮我你可以这样做: string[] output = str1.Select(s => new { Value = s, NormalizedValue

从字符串数组

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”

所以请帮帮我

你可以这样做:

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

您可以将所有值转换为它们的标准化形式,并调用
Distinct()

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

(这是基于中的代码。)

为什么输出必须是这样的?这对是无序的(所以X-Y总是与Y-X相同)吗?我在第一个版本的回答中是这样的,但是它导致了以下问题:<代码> { U4-U1 } < /Case> = >代码> {U1-U4 } < /C>。如果你认为U4-U1和U1-U4相等,那么你也不应该关心输出中的哪一个。但是,这个问题显然没有被很好地说明,因此无法确定。是的,但是在输出中看到输入中没有的值是相当奇怪的。