using System.Collections.Generic;
public static void Main()
var set1 = new List<Dictionary<string, string>>();
var d1 = new Dictionary<string, string>(){{"a1","1"}, {"a2", "2"}};
var d2 = new Dictionary<string, string>(){{"b1","1"}, {"b2", "2"}};
var set2 = new List<Dictionary<string, string>>();
var d3 = new Dictionary<string, string>(){{"a1","1"}, {"a2", "2"}};
var d4 = new Dictionary<string, string>(){{"b1","1"}, {"b2", "2"}};
var str1 = ConvertToString(set1);
var str2 = ConvertToString(set2);
Console.WriteLine(str1 == str2? "equal" : "not equal");
private static string ConvertToString(List<Dictionary<string,string>> hSet)
var dictStrs = new List<string>();
var kvs = d.Keys.Select(key => string.Format("{0},{1}", key, d[key])).OrderBy(s => s);
dictStrs.Add(string.Join("\r\n", kvs));
return string.Join("#", dictStrs.OrderBy(s => s));