[C#/ASP.NET]List<>中Sort()、Find()、FindAll()、Exist()的使用方法

[C#/ASP.NET]中List<T>真的非常好用。一个例子简单说明一下List<>中Sort()、Find()、FindAll()、Exist()的使用方法

简单介绍:

List<T>.Sort() → 排序T

List<T>.Find() → 找出一個T

List<T>.FindAll() →找出多個T

List<T>.Exist() →判斷T是否存在

示例代码:

页面文件GenericList.aspx

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<%@ Page
Language=
"C#" AutoEventWireup="true" CodeFile="GenericList.aspx.cs" Inherits="GenericList" %>

<!DOCTYPE
html PUBLIC
"-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html
xmlns=
"http://www.w3.org/1999/xhtml">

<head
runat=
"server">

    <title>GenericList</title>

</head>

<body>

    <form
id=
"form1" runat="server">

    <div>

        原始資料:

        <asp:GridView
ID=
"GridView1" runat="server">

        </asp:GridView>

    </div>

    </form>

</body>

</html>

后台代码文件GenericList.aspx.cs

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

using
System;

using
System.Collections.Generic;

using
System.Web;

using
System.Web.UI;

using
System.Web.UI.WebControls;

public
partial class GenericList :
System.Web.UI.Page

{

    protected
void Page_Load(object
sender, EventArgs e)

    {

        List<Person> lstPerson = new List<Person>();

        lstPerson.Add(new Person(1,
"puma",
10));

        lstPerson.Add(new Person(2,
"F6 Team",
20));

        lstPerson.Add(new Person(3,
"ASP.NET",
30));

        lstPerson.Add(new Person(4,
"Dotblogs",
40));

        //原始資料顯示在GridView上

        this.GridView1.DataSource = lstPerson;

        this.GridView1.DataBind();

        //List<T>.Find()

        //找出Name='puma'的Person

        Response.Write("找出Name='puma'的Person→ ");

        Response.Write(lstPerson.Find(delegate(Person p) {
return p.Name == "puma"; }).ToString() +
"<p>");

        //List<T>.FindAll()

        //找出Age>10的數目

        Response.Write("找出Age>10的數目→ ");

        Response.Write(lstPerson.FindAll(delegate(Person p) {
return p.Age > 10; }).Count.ToString() + "<p>");

        //List<T>.Exists()

        //檢查Name='F6'是否存在

        Response.Write("檢查Name='F6'是否存在→ ");

        Response.Write(lstPerson.Exists(delegate(Person p) {
return p.Name == "F6"; }).ToString() +
"<p>");

        //List<T>.Sort()

        //依Name升冪排序

        Response.Write("<p>依Name升冪排序↑<br/>");

        lstPerson.Sort(delegate(Person p1,
Person p2) {
return Comparer<string>.Default.Compare(p1.Name, p2.Name); });

        foreach
(Person p in lstPerson)

        {

            Response.Write(p.ToString() + "<br/>");

        }

        //List<T>.Sort()

        //依Name降冪排序

        Response.Write("<p>依Name降冪排序↓<br/>");

        lstPerson.Sort(delegate(Person p1,
Person p2) {
return Comparer<string>.Default.Compare(p2.Name, p1.Name); });

        foreach
(Person p in lstPerson)

        {

            Response.Write(p.ToString() + "<br/>");

        }

    }

}

public class
Person

{

    private
int _ID;

    private
string _Name;

    private
int _Age;

    public
Person(int
ID, string
Name, int
Age)

    {

        _ID = ID;

        _Name = Name;

        _Age = Age;

    }

    public
int ID

    {

        set
{ _ID = value; }

        get
{ return
_ID; }

    }

    public
string Name

    {

        set
{ _Name = value; }

        get
{ return
_Name; }

    }

    public
int Age

    {

        set
{ _Age = value; }

        get
{ return
_Age; }

    }

    public
override string ToString()

    {

        return
string.Format("ID:{0},Name:{1},Age:{2}", _ID, _Name, _Age);

    }

}

 

执行结果:

转自:http://www.cnblogs.com/ATree/archive/2011/02/25/Asp-Net_List_Sort_Find_FindAll_Exist.html

时间: 2024-12-21 12:04:18

[C#/ASP.NET]List<>中Sort()、Find()、FindAll()、Exist()的使用方法的相关文章

ASP.NET WebForm中异步请求防止XSRF攻击的方法

在ASP.NET MVC中微软已经提供了如何防止跨域攻击的方法.对于传统Webfrom中使用Handler来接受ajax的Post请求数据,如何来防止XSRF攻击呢.这里给大家提供一个简单地方法,和MVC中类似.   1.首先需要在你的站点中安装如下的nuget包.可以手动复制dll. Install-Package Microsoft.AspNet.WebPages -Version 2.0.20710 最新版本的Razor是3.0的,安装WebPages的时候,它依赖于Razor,所以对于f

开发 ASP.NET 站点中的三种表格化数据方法

asp.net|数据|站点 在开发ASP.NET站点项目中,经常用表格化的方式显示数据.最常用的可能就是DataGrid绑定DataSet数据的方式.在做过的软件项目中,有3种表格化数据的典型处理方式. 1.DataGrid绑定数据源.这种方式大家用的最多,但是DataGrid与ADO.NET完美的绑定方式,还是让人不爽.清一色的DataGrid风格很难适应不同项目的特殊风格,而且在DataGrid上做出的个性化处理也会非常的麻烦. 2.用XML(数据)+XSL(样式单).大家能理解,DataS

ASP在ACCESS中模糊查询"内存溢出"的解决方法

今天在日常维护一个网站时,发现该网站的留言程序没有经过严格的验证过滤,导致了将近十万条垃圾数据.而其中又不乏重要信息,需要清理数据,以及增加更为严格的验证措施. 而通过在数据库中直接删除又不太科学,会误删很多重要信息. 通过 模糊查询语句: 复制代码 代码如下:select * from Feedback where Comments like '%http%' 结果:"内存溢出" 经过不断的搜索,找出了问题的主要原因: asp 中用 LIKE 关键字查询日文符号就会出错,比如说Chr

asp.ne开发中跳转页面的三种方法比较

这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护.但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端. 1 response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同

asp.net代码中修改web.config节点的具体方法_实用技巧

但是这个变量不会一个固定的值,会根据实际情况而发生变化,比如在需要读取一个配置文件的路径,而这个路径是站点发布的实际硬盘路径,如果直接是编译时状态,没有问题.但是如果站点iis更换路径,就需要修改这个web.config中的参数.如果能将这个编译时状态修改为运行时状态,那将更为合理和方便.这就需要存在一种在代码中能够动态修改web.config的方案.  代码  复制代码 代码如下:   /// <summary>          /// 写入web.config          ///

ASP.NET Gridview 中使用checkbox删除的2种方法实例分享_实用技巧

方法一:后台代码: 复制代码 代码如下:  protected void btn_delete_Click(object sender, EventArgs e)    {        for (int i = 0; i <this.GridView1.Rows.Count; i++)        {            int id = Convert.ToInt32(this.GridView1.DataKeys[i].Value);            if ((this.Grid

asp.net C#中父窗口及其子窗口标题调用方法

如果用纯 c 代码编写,那么必须自己负责用 defframeproc 和 defmdichildproc 创建窗口:在 mfc 中则使用 cmdiframewnd/cmdichildwnd:.net 框架平台里则设置 form.ismdicontainer 和 form.mdiparent,不管用哪种方式,其核心都是 user kernel,尤其是 defframeproc,当 mdi 子窗口最大化时,它会联接父子窗口的标题文本来产生主窗口标题串.理解了这一点,下面我来示范如何改写mdi.这个例

ASP.NET MVC中为DropDownListFor设置选中项的方法_实用技巧

在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中.本篇只整理思路,不涉及完整代码. □ 思路 往前台视图传的类型是List<SelectListItem>,把SelectListItem选中项的Selected属性设置为true,再把该类型对象实例放到ViewBag,ViewData或Model中传递给前台视图.   通过遍历List<SelectListItem>类型对象实例 □ 控制器 public Acti

asp.ent(C#)中判断空字符串的3种方法以及性能分析_实用技巧

3种方法分别是: string a=""; 1.if(a=="") 2.if(a==String.Empty) 3.if(a.Length==0) 3种方法都是等效的,那么究竟那一种方法性能最高呢?本人用实验说明问题. 建立3个aspx页面(为什么用网页,主要是利用Microsoft Application Center Test ) WebForm1.aspx 复制代码 代码如下: private void Page_Load(object sender, Sys