[ASP.NET]利用List的Sort()、Find()、FindAll()、Exist()來解決一些問題

最近寫案子常常用到List<T>,這個東西還真好用

因為它有下列東西:

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

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

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

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

小弟就寫個範例介紹這些東西吧..

GenericList.aspx

01 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GenericList.aspx.cs" Inherits="GenericList" %>
02  
03 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04  
05 <html xmlns="http://www.w3.org/1999/xhtml">
06 <head runat="server">
07     <title>GenericList</title>
08 </head>
09 <body>
10     <form id="form1" runat="server">
11     <div>
12         原始資料:
13         <asp:GridView ID="GridView1" runat="server">
14         </asp:GridView>
15     </div>
16     </form>
17 </body>
18 </html>

GenericList.aspx.cs

001 using System;
002 using System.Collections.Generic;
003 using System.Web;
004 using System.Web.UI;
005 using System.Web.UI.WebControls;
006  
007 public partial class GenericList : System.Web.UI.Page
008 {
009  
010     protected void Page_Load(object sender, EventArgs e)
011     {
012         List<Person> lstPerson = new List<Person>();
013         lstPerson.Add(new Person(1, "puma", 10));
014         lstPerson.Add(new Person(2, "F6 Team", 20));
015         lstPerson.Add(new Person(3, "ASP.NET", 30));
016         lstPerson.Add(new Person(4, "Dotblogs", 40));
017  
018         //原始資料顯示在GridView上
019         this.GridView1.DataSource = lstPerson;
020         this.GridView1.DataBind();
021  
022  
023  
024         //List<T>.Find()
025         //找出Name='puma'的Person
026         Response.Write("找出Name='puma'的Person→ ");
027         Response.Write(lstPerson.Find(delegate(Person p) { return p.Name == "puma"; }).ToString() + "<p>");
028  
029  
030  
031         //List<T>.FindAll()
032         //找出Age>10的數目
033         Response.Write("找出Age>10的數目→ ");
034         Response.Write(lstPerson.FindAll(delegate(Person p) { return p.Age > 10; }).Count.ToString() + "<p>");
035  
036  
037  
038         //List<T>.Exists()
039         //檢查Name='F6'是否存在
040         Response.Write("檢查Name='F6'是否存在→ ");
041         Response.Write(lstPerson.Exists(delegate(Person p) { return p.Name == "F6"; }).ToString() + "<p>");
042  
043  
044  
045         //List<T>.Sort()
046         //依Name升冪排序
047         Response.Write("<p>依Name升冪排序↑<br/>");
048         lstPerson.Sort(delegate(Person p1, Person p2) { returnComparer<string>.Default.Compare(p1.Name, p2.Name); });
049         foreach (Person p in lstPerson)
050         {
051             Response.Write(p.ToString() + "<br/>");
052         }
053  
054  
055  
056         //List<T>.Sort()
057         //依Name降冪排序
058         Response.Write("<p>依Name降冪排序↓<br/>");
059         lstPerson.Sort(delegate(Person p1, Person p2) { returnComparer<string>.Default.Compare(p2.Name, p1.Name); });
060         foreach (Person p in lstPerson)
061         {
062             Response.Write(p.ToString() + "<br/>");
063         }
064     }
065 }
066  
067 public class Person
068 {
069     private int _ID;
070     private string _Name;
071     private int _Age;
072  
073     public Person(int ID, string Name, int Age)
074     {
075         _ID = ID;
076         _Name = Name;
077         _Age = Age;
078     }
079  
080     public int ID
081     {
082         set { _ID = value; }
083         get return _ID; }
084     }
085  
086     public string Name
087     {
088         set { _Name = value; }
089         get return _Name; }
090     }
091  
092     public int Age
093     {
094         set { _Age = value; }
095         get return _Age; }
096     }
097  
098     public override string ToString()
099     {
100         return string.Format("ID:{0},Name:{1},Age:{2}", _ID, _Name, _Age);
 }
102 }

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using SqlServerHelper;
using LogisticsMODEL;
using LogisticsDAL;
using Untity;
using System.Text;
namespace LogisticsBLL
{

public class B_Sys_Region : IB_Sys_Region
{
public static IList<M_Sys_Region> GetProvince()
{
return GetRegionList().FindAll(delegate(M_Sys_Region m) { return m.Parentid == 0; });
}
public static IList<M_Sys_Region> GetRegionList(int parentid)
{
return GetRegionList().FindAll(delegate(M_Sys_Region m) { return m.Parentid == parentid; });
}
/// <summary>
/// 根据编码查询地区名称
/// </summary>
/// <param name="_Codeid"></param>
/// <returns></returns>
public static M_Sys_Region GetRegionModes(int _Codeid)
{
Dictionary
<int, M_Sys_Region> d_Region = CacheHelper.GetCache(B_CacheKey.Sys_Region_Dictionary) as Dictionary<int, M_Sys_Region>;
if (d_Region == null)
{
d_Region
= new Dictionary<int, M_Sys_Region>();
IList
<M_Sys_Region> _RegionList = new B_Sys_Region().SelectDataWhere(null);
foreach (M_Sys_Region sys_RegionModel in _RegionList)
{
d_Region.Add(sys_RegionModel.Codeid.Value, sys_RegionModel);
}
}
M_Sys_Region _M_Sys_Region
= new M_Sys_Region();
return d_Region.TryGetValue(_Codeid, out _M_Sys_Region) ? _M_Sys_Region : null;
}

/// <summary>
/// 模糊搜索地区 返回地球对象和地区级别
/// </summary>
/// <param name="name">地区名称</param>
/// <param name="lv">1表示省 2城市 3表示区县</param>
/// <returns></returns>
public static M_Sys_Region GetRegionLikeModel(string name,out int lv) {
lv
= -1;
const int Province = 2;//省的编号长度
const int City = 4;//市的编号长度
const int County = 6;//县区的编号长度

M_Sys_Region _M_Sys_Region
=GetRegionList().Find(delegate (M_Sys_Region m){ return m.Name.IndexOf(name)>-1; });
if (_M_Sys_Region != null && _M_Sys_Region.Codeid != null)
{
switch (_M_Sys_Region.Codeid.Value.ToString().Length)
{

case Province: lv = 1; break;
case City: lv = 2; break;
case County: lv = 3; break;
}
}
return _M_Sys_Region;
}

public static List<M_Sys_Region> GetRegionList()
{
List
<M_Sys_Region> syslist = CacheHelper.GetCache(B_CacheKey.Sys_Region) as List<M_Sys_Region>;
if (syslist == null)
{
syslist
= new B_Sys_Region().SelectDataWhere(null) as List<M_Sys_Region>;
CacheHelper.SetCache(B_CacheKey.Sys_Region, syslist);
}
return syslist;
}
}
}

posted @ 2011-06-26 16:28  coding111  阅读(...)  评论(...编辑  收藏