以下是我的类:
现在我有两个以上地区类别的列表,如下所示,包含一些数据:
现在,ParentName 包含以下关于 region1 的数据:
现在,ParentName 包含以下数据,针对于region2:
现在我正在尝试将region2的ParentName合并到region1中,如果region1的任何部分与逗号分隔记录后的region2匹配,则执行如下操作:
public class Regions
{
public int Id { get; set; }
public string[] ParentName { get; set; }
}
现在我有两个以上地区类别的列表,如下所示,包含一些数据:
var region1 = new Regions();
var region2 = new Regions();
现在,ParentName 包含以下关于 region1 的数据:
[0] : Abc.mp3,Pqr.mp3
[1] : Xxx.mp3
[2] : kkk.mp3
[3] : ppp.mp3,zzz.mp3,rrr.mp3,ddd.mp3
现在,ParentName 包含以下数据,针对于region2:
[0] : Abc.mp3,Pqr.mp3,lmn.mp3
[1] : rrr.mp3,ggg.mp3,yyy.mp3
现在我正在尝试将region2的ParentName合并到region1中,如果region1的任何部分与逗号分隔记录后的region2匹配,则执行如下操作:
[0] : Abc.mp3,Pqr.mp3,lmn.mp3
[1] : Xxx.mp3
[2] : kkk.mp3
[3] : ppp.mp3,zzz.mp3,rrr.mp3,ddd.mp3,ggg.mp3,yyy.mp3
在以上期望的输出中,Abc.mp3和Pqr.Mp3(Region1和Region2)只匹配了Lmn.mp3没有匹配,因此它将被附加到Region1的末尾。
对于来自Region1和Region2的最后一条记录,rrr.mp3是匹配的(单个匹配也足够),因此来自Region2的不匹配记录即ggg.mp3、yyy.mp3将附加到Region1的末尾。
我在Region1中得到的输出结果:
[0] : Abc.mp3,Pqr.mp3
[1] : Xxx.mp3
[2] : kkk.mp3
[3] : ppp.mp3,zzz.mp3,rrr.mp3,ddd.mp3
[4] : Abc.mp3,Pqr.mp3,lmn.mp3
[3] : rrr.mp3,ggg.mp3,yyy.mp3
代码:
region1.ParentName = region1.ParentName.Concat(region2.ParentName).Distinct().ToArray();
public static T[] Concat<T>(this T[] x, T[] y)
{
if (x == null) throw new ArgumentNullException("x");
if (y == null) throw new ArgumentNullException("y");
int oldLen = x.Length;
Array.Resize<T>(ref x, x.Length + y.Length);
Array.Copy(y, 0, x, oldLen, y.Length);
return x;
}