public static class ExtendMethods
    {
        public class DifferenceDto<T>
        {
            public DifferenceDto()
            {
                FrontOnly = new List<T>();
                BackOnly = new List<T>();
                Common = new List<T>();
            }

            /// <summary>
            /// 只有前面的列表有
            /// </summary>
            public List<T> FrontOnly { get; set; }

            /// <summary>
            /// 只有后面的列表有
            /// </summary>
            public List<T> BackOnly { get; set; }

            /// <summary>
            /// 共有部分
            /// </summary>
            public List<T> Common { get; set; }
        }

        public static DifferenceDto<T> GetDifferenceDto<T>(this List<T> frontList, List<T> backList, Predicate<T> comparer,Func<T,bool> func)
        {
            var result = new DifferenceDto<T>();
            foreach (var backitem in backList)
            {
                if (frontList.Exists(e=> func(backitem)))
                {
                    result.Common.Add(backitem);
                }
                else
                {
                    result.BackOnly.Add(backitem);
                }
            }

            foreach (var item in frontList)
            {
                if (!backList.Exists(comparer))
                {
                    result.FrontOnly.Add(item);
                }
            }
            return result;
        }
    }

 

 posted on 2020-11-09 14:22  絆τ  阅读(164)  评论(0编辑  收藏  举报