/// <summary> /// 扩展Distinct方法(对象需标记为可序列化) /// </summary> /// <param name="reserveMode">保留模式</param> public static List <T> Distinct <T, TResult>(this IList <T> list, Func <T, TResult> keySelector, ReserveMode reserveMode) where T : class { PubEqualComparer <T, TResult> eq = new PubEqualComparer <T, TResult>(keySelector); var result = new List <T>(); if (reserveMode == ReserveMode.First) { list.Reverse(); } for (int i = 0, len = list.Count; i < len; i++) { bool isFind = false; for (int j = i + 1; j < len; j++) { if (eq.Equals(list[i], list[j])) { isFind = true; break; } } // 保留最后1个不重复项 if (!isFind) { result.Add(list[i].DeepClone <T>()); } } if (reserveMode == ReserveMode.First) { result.Reverse(); } return(result); }
public static String ConvertResModeText(ReserveMode? mode) { switch (mode) { case ReserveMode.KeywordAuto: return "キーワード予約"; case ReserveMode.ManualAuto : return "プログラム自動予約"; case ReserveMode.EPG : return "個別予約(EPG)"; case ReserveMode.Program : return "個別予約(プログラム)"; default : return ""; } }