using System.Collections.Generic;
static Dictionary<string, List<string>> parse(string input)
var res = new Dictionary<string, List<string>>();
foreach (string line in input.Replace("\r", "").Split('\n'))
var a1 = line.Split(':');
var a2 = a1.Last().Split('、');
res.Add(a1.First(), new List<string>(a2));
public static void Main()
@"曹操:冀州、兗州、青州、徐州、梁州、雍州、豫州
@"曹操:冀州、兗州、青州、潮州、梁州、雍州、豫州
var origTerritory = parse(srcOrig);
var newTerritory = parse(srcNew);
StringBuilder sb = new StringBuilder();
foreach (string leader in origTerritory.Keys.Union(newTerritory.Keys))
var origList = origTerritory.ContainsKey(leader) ?
origTerritory[leader] : new List<string>();
var newList = newTerritory.ContainsKey(leader) ?
newTerritory[leader] : new List<string>();
var toAdd = newList.Except(origList);
var toDel = origList.Except(newList);
sb.AppendFormat("--{0} 刪:{1} 增:{2}\n", leader,
string.Join(",", toDel.ToArray()),
string.Join(",", toAdd.ToArray()));
"DELETE FROM Territory WHERE Leader='{0}' AND State='{1}'\n",
"INSERT INTO Territory VALUES ('{0}','{1}')\n",
Console.Write(sb.ToString());