繁体   English   中英

清单的名称是什么 <T> 设计模式叫什么? 如何实施

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM