//调用方法
public partial class xuanfudiv_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<MyClass> mcl = new List<MyClass>();
mcl.AddMyClass(new MyClass { ID = 1, Name = "sunsy",Age=28 },null);
mcl.AddMyClass(new MyClass { ID = 1, Name = "sunsy", Age = 28 }, null);
mcl.AddMyClass(new MyClass { ID = 1, Name = "sunsy", Age = 28 }, null);
mcl.ForEach(p => Response.Write("姓名:" + p.Name + ",年龄" + p.Age + "<br/>"));
//下面是使用linq中的groupby分组排序后显示
var query = from sun in mncl
orderby sun.Name descending, sun.Age ascending
group sun by sun.Age into san
select san;
foreach (IGrouping<int,MyClass> mnclist in query)
{
foreach (MyNewClass mn in mnclist)
{
Response.Write("姓名:" + mn.Name + ",年龄" + mn.Age + "<br/>");
}
}
}
}
public class MyClass
{
public string Name { set; get; }
public int ID { set; get; }
public int Age { set; get; }
}
public static class extend
{
//方法一:单类扩展方法
public static List<MyClass> AddMyClass(this List<MyClass> myclass, MyClass mc, string attr)
{
MyClass myc = null;
if (attr != "" && attr != null)
{
PropertyInfo pro = mc.GetType().GetProperty(attr);
myc = myclass.Find(p => p.Name == pro.GetValue(mc, null).ToString());
}
if (myc == null)
myclass.Add(mc);
return myclass;
}
//方法二:泛型扩展方法
public static List<T> AddMyClass<T>(this List<T> myclass, T mc, string attr)
{
if (attr != "" && attr != null)
{
PropertyInfo pro = mc.GetType().GetProperty(attr);
var myc = myclass.Find(p => pro.GetValue(p, null).ToString() == pro.GetValue(mc, null).ToString());
if (myc == null)
myclass.Add(mc);
}
else
{
myclass.Add(mc);
}
return myclass;
}
}