C# 拆分-联接、聚合、压缩、LINQ

C# 拆分-联接、聚合、压缩、LINQ,c#,linq,join,split,aggregate,C#,Linq,Join,Split,Aggregate,第一个GUID字符串: A-B-C-D 第二个GUID字符串: W-X-Y-Z 3rd必需可逆字符串: W-X-Y-Z A-W-B-X-C-Y-D-Z 加入第1和第2名以获得第3名,然后将其分开以获得两者的最佳方法是什么 加入拆分、聚合、压缩还是其他 编辑I: 如果假定每个GUID都是可枚举的 {A,B,C,D}?我不知道“最好的方法是什么”,但你可以用这样一个简单的“for”循环: string a = "ABCD"; string b = "WXYZ"; string c = stri

第一个GUID字符串:

A-B-C-D
第二个GUID字符串:

W-X-Y-Z
3rd必需可逆字符串:

W-X-Y-Z
A-W-B-X-C-Y-D-Z

加入第1和第2名以获得第3名,然后将其分开以获得两者的最佳方法是什么

加入拆分、聚合、压缩还是其他

编辑I
如果假定每个GUID都是
可枚举的
{ABCD}?

我不知道“最好的方法是什么”,但你可以用这样一个简单的“for”循环:

string a = "ABCD";
string b = "WXYZ";
string c = string.Empty;
if(a.Lenght == b.Lenght)//Check lenght
{
   for(int i = 0; i < a.Lenght; i++)
   {
      c += a[i] + "-" + b[i];
      if(i != a.Lenght)//If it isn't last character
      {
         c += "-";//Add a "-" end of "c"
      }
   }
}
string a=“ABCD”;
字符串b=“WXYZ”;
string c=string.Empty;
如果(a.Lenght==b.Lenght)//检查长度
{
对于(int i=0;i
最佳方法?我不确定。但我发现这是一个简单的方法

string g1 = "A-B-C-D";
string g2 = "W-X-Y-Z";

var result = String.Join("-",g1.Split('-').Zip(g2.Split('-'), (a,b) => a+"-"+b));
编辑

回来

int i=0;
var gs = result.Split('-').GroupBy(_ => i++ % 2).Select(g => String.Join("-",g))
               .ToList();

如果语法不是100%,请原谅,C#不是我的第一语言,但我会将每个GUID拆分为一个列表。然后是一个简单的循环

List<string> lstGuid1 = new List<string>;
List<string> lstGuid2 = new List<string>;
lstGuid1.AddRange(guid1.ToString().Split("-"));
lstGuid2.AddRange(guid2.ToString().Split("-"));
string guid3 = null;
if(lstGuid1.Length == lstGuid2.Length)
{
  for(int i = 0; i < lstGuid1.Length; i++)
  {
    guid3 += lstGuid1[i] + "-" + lstGuid2[i] + "-";
  }
  guid3 = guid3.Substring(0, guid3.Length - 1);
}
List lstGuid1=新列表;
List lstGuid2=新列表;
lstGuid1.AddRange(guid1.ToString().Split(“-”);
lstGuid2.AddRange(guid2.ToString().Split(“-”);
字符串guid3=null;
if(lstGuid1.Length==lstGuid2.Length)
{
for(int i=0;i
要合并:

string merged = string.Join("-",
    str1.Split('-').Zip(str2.Split('-'), (a, b) => a + "-" + b).ToArray());
结果:

A-W-B-X-C-Y-D-Z
A-B-C-D
W-X-Y-Z
拆分:

ILookup<int, string> split = merged.Split('-')
    .Select((a, i) => new { i = i, val = a })
    .ToLookup(x => x.i % 2, x => x.val);
string split1 = string.Join("-", split[0].ToArray());
string split2 = string.Join("-", split[1].ToArray());

然后呢?我试过了弦.康卡特。。这只是把它们连接在一起,而不是混合在一起!这将包括双Dashello,我不寻求简单。不过,感谢您的关注:)@Ahmedjoneim干得好!:)用真实的guid试试这个,比如
2D548EEF-07BB-44E6-AC0F-BE2134D082BD
如何让
g1
g2
返回?@AhmedGhoneim see my update+1更好地遵循Linq的功能风格,没有状态突变;此帐户是聊天机器人。看起来好像有人忘了作为他们的机器人帐户注销;P