[英]what is name of the List<T> design pattern called? how to implement it
众所周知,C#列表可以将函数放在后面,但可以通过函数来过滤列表。
例如,假设很多学生都在学生列表中。
var students=new List<student>();
然后要获得学生名单,我们可以在后面添加一些功能,例如
students.find(id).sortbydesending(k=>k.x).skip(10).take(5).toList();
插入skip()和take()的顺序将影响结果。
我正在对一种方法进行编码,以相应地检索学生名单。
首先 ,我想对列表函数做类似的事情。 例如,我需要订购“学生根据学生姓名”列表。
而不是做
students.sortbydescending(k=>k.name).toList();
我想要代码就像
students.sortbyNamedesc().toList();
它将返回与上述相同的结果。
其次是设计模式名称和(如果可能)实施指南
这是因为我打算做这样的事情。
getStudent().searchName(searchQuery).sortby(id);
然后我可以获取与搜索查询类似的学生姓名,并按学生ID而不是学生的姓名进行排序
getstudent(searchQuery,id,skip,take);
public IList<Student> getStudent(searchQuery,id,skip,take){
var students=new List<student>();
if(searchquery!="")
students.where(x=>x.x==searchquery);
if(skip!=null&&skip!=0)
students.skip(skip);
if(take!=null&&take!=0)
students.take(take);
return students;
}
这些称为扩展方法 。 您可以将它们定义为静态类中的静态方法,并在第一个参数之前添加this
。 例如:
public static class StudentExtensions
{
public static IEnumerable<Student> OrderByNameDescending(this IEnumerable<Student> source)
{
return source.OrderByDescending(x => x.Name);
}
}
用法:
studentList.OrderByNameDescending()
(静态类在使用时必须是可访问的,并且您必须位于其名称空间中,或者将其包含在using
语句中。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.