public static void addSound(LingeaSndFile[] files, LingeaSndFiles[] owners, LingeaSndFile newFile, LingeaSndFiles newOwner) { var data = File.ReadAllBytes(newFile.Path(newOwner, true)); var sameFile = files.Zip(owners, (file, owner) => new { file, owner }).FirstOrDefault(f => f.file.theSame(f.owner, data)); if (sameFile == null) return; //merge newFile do sameFile a vymaz newFile foreach (var cl in newFile.clones) if (!sameFile.file.clones.Any(c => c.fileName == cl.fileName)) sameFile.file.clones.Add(cl); File.Copy(newFile.Path(newOwner, true), @"d:\temp\duplSounds\" + newFile.fileName + ".mp3", true); File.Delete(newFile.Path(newOwner, true)); File.Copy(newFile.Path(newOwner, false), @"d:\temp\duplSounds\" + newFile.fileName + ".xml", true); File.Delete(newFile.Path(newOwner, false)); XmlUtils.ObjectToFile(sameFile.file.Path(sameFile.owner, false), sameFile.file); }