c#扩展函数

分页

 public static class IEnumerableExt
    {
        public static (IEnumerable<T> dataAfterPaging, Pageinfo pageinfo) Paging<T>(this IEnumerable<T> list, int PageIndex, int PageSize)
        {
            return
                (list.Skip(PageSize * (PageIndex - 1)).Take(PageSize), new Pageinfo()
                {
                    PageIndex = PageIndex,
                    PageSize = PageSize,
                    TotalRecords = list.Count(),
                    TotalPages = (list.Count() + PageSize - 1) / PageSize
                }
                );
        }
    }

对象的相同属性赋值

public static class ObjectExt
    {
        // <summary>
        /// 给对象赋值的方法(不赋地址),含过滤
        /// </summary>
        /// <typeparam name="T"><peparam>
        /// <param name="left">=号左边</param>
        /// <param name="right">=号右边</param>
        /// <param name="id">过滤条件</param>
        public static void Assignment<T, V>(this Object value, T left, V right, string id = null)
        {
            Type rightType = right.GetType();
            Type leftType = left.GetType();
            List<PropertyInfo> pList = rightType.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance).ToList();
            for (int i = 0; i < pList.Count; i++)
            {
                //根据属性名获得指定的属性对象
                PropertyInfo leftPropertyInfo = leftType.GetProperty(pList[i].Name);
                //设置属性的值
                if (id != null)
                {
                    if (pList[i].Name != id)
                    {
                        leftPropertyInfo.SetValue(left, pList[i].GetValue(right, null), null);
                    }
                }
                else
                {
                    leftPropertyInfo.SetValue(left, pList[i].GetValue(right, null), null);
                }

            }
        }
    }