using System.Collections.Generic;
public String module_name;
public Module(string name)
public static void Main()
Console.WriteLine("Hello World");
Program p = new Program();
public void CurrentCode()
var existingModules = new List<Module>() { new Module("module1"), new Module("module2") };
var newModules = new List<Module>() { new Module("newModule") };
var newModuleNames = newModules.Select(n1 => n1.module_name);
var difference = existingModules.Where(n => !newModuleNames.Contains(n.module_name));
if (difference.Equals(existingModules))
else if (!difference.Equals(newModules))
throw new Exception("immutable property");
var existingModules = new List<Module>() { new Module("module1"), new Module("module2") };
var newModules = new List<Module>() { new Module("newModule") };
var newModuleNames = newModules.Select(n1 => n1.module_name);
var difference = existingModules.Where(n => !newModuleNames.Contains(n.module_name));
if (AreSame(difference, existingModules))
else if (!AreSame(difference, newModules))
throw new Exception("immutable property");
public bool AreSame(IEnumerable<Module> first, IEnumerable<Module> second)
var areEqual = first.OrderBy(i => i.module_name).SequenceEqual(second.OrderBy(i => i.module_name));