public static ChanListStats operator +(ChanListStats a, ChanListStats b) { var stats = new ChanListStats(); stats.Tv = a.Tv + b.Tv; stats.Radio = a.Radio + b.Radio; stats.RadioMaskServiceTypeMismatch = a.RadioMaskServiceTypeMismatch + b.RadioMaskServiceTypeMismatch; stats.Radio0 = a.Radio0 + b.Radio0; stats.Radio4k = a.Radio4k + b.Radio4k; stats.inMajorOrder = a.inMajorOrder && b.inMajorOrder; stats.hasGap = a.hasGap || b.hasGap; stats.deletedMajor0 = a.deletedMajor0 || b.deletedMajor0; stats.deletedMajorNon0 = a.deletedMajorNon0 || b.deletedMajorNon0; stats.UserEditChNumber = a.UserEditChNumber + b.UserEditChNumber; stats.UserSelChNo = a.UserSelChNo + b.UserSelChNo; stats.FactoryDefault = a.FactoryDefault + b.FactoryDefault; stats.Disabled = a.Disabled + b.Disabled; stats.Skipped = a.Skipped + b.Skipped; stats.Invisible = a.Invisible + b.Invisible; stats.Deleted = a.Deleted + b.Deleted; stats.Discarded = a.Discarded + b.Discarded; stats.UserCustomize = a.UserCustomize + b.UserCustomize; stats.NumUnSel = a.NumUnSel + b.NumUnSel; stats.Lcn = a.Lcn + b.Lcn; return(stats); }
private static string ProcessWebOs5JsonData(string json) { dynamic doc = JsonConvert.DeserializeObject(json); var sb = new StringBuilder(); var channels = (IList)doc.channelList; sb.Append("\t").Append(channels?.Count); var tvAndRadioPerSignalSource = new Dictionary <string, ChanListStats>(); foreach (dynamic ch in channels) { var src = (string)ch.sourceIndex; if (!tvAndRadioPerSignalSource.TryGetValue(src, out var stats)) { stats = new ChanListStats(); tvAndRadioPerSignalSource[src] = stats; } stats.Add(ch); } var a = new ChanListStats(); var t = new ChanListStats(); var c = new ChanListStats(); var s = new ChanListStats(); var o = new ChanListStats(); var all = new ChanListStats(); foreach (var entry in tvAndRadioPerSignalSource) { switch (entry.Key) { case "ANTENNA ANALOG": case "CABLE ANALOG": case "SATELLITE ANALOG": a += entry.Value; break; case "ANTENNA DIGITAL": t += entry.Value; break; case "CABLE DIGITAL": c += entry.Value; break; case "SATELLITE DIGITAL": s += entry.Value; break; default: o += entry.Value; break; } all += entry.Value; } sb.Append(all.ToString(true) + a + t + c + s + o); return(sb.ToString()); }