private static void Stuff(ResponsesSchema responses) { #region Temp / research var props = responses .Definitions .SelectMany( a => a .Value .Properties .Values .Where(b => b.Properties != null) .SelectMany( b => b .Properties .Keys .Select(c => new { keys = c, type = a.Key }) ) ) .GroupBy(a => a.keys) .Select(a => new { a.Key, cnt = a.Count(), values = new HashSet <string>(a.Select(b => b.type)) }) .Where(a => a.cnt > 1) .OrderBy(a => - a.cnt) .ToArray(); var pms = props .SelectMany( a => props .Where(b => a.Key.CompareTo(b.Key) < 0) .Select(b => { var matches = a.values.Count(sourceType => b.values.Contains(sourceType)); if (matches == 0) { return(null); } return(new { a = a.Key, b = b.Key, x = matches, ac = a.cnt, bc = b.cnt }); }) .Where(b => b != null) ) //.OrderByDescending(a => a.x / (double)Math.Min(a.ac, a.bc)) .Where(a => a.x > 1) .OrderByDescending(a => a.x) .ToList(); var subsets = pms .Where(a => a.x >= (double)Math.Min(a.ac, a.bc)) .ToList(); pms = pms .Where(a => a.x < (double)Math.Min(a.ac, a.bc)) .ToList(); #endregion }
public Methods(MethodsSchema methodsSchema, ResponsesSchema responsesSchema, ResponsesSchema objectsSchema) { M = methodsSchema; R = responsesSchema; O = objectsSchema; }
public Objects(ResponsesSchema objectsSchema) => O = objectsSchema;