亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#遞歸方法實現無限級分類顯示效果

2024-09-07 17:05:38
字體:
來源:轉載
供稿:網友

這篇文章主要講述C#遞歸方法實現無限級分類顯示效果,結合完整實例形式分析了C#遞歸算法與數據元素遍歷的相關技巧,具有一定參考借鑒價值,需要的朋友不妨看看。

數據庫表:CategoryInfo
字段名 類型
ciID int //記錄序號,自增量
ciName nvarchar(20) //分類名
ciParent int //父分類序號
ciLayer int //所處的層次
ciDescription nvarchar(200) //對分類的描述
分類的類設計
public class CategoryInfo
{
private int ciID;//分類ID
private string ciName;//分類名
private int ciParent;//分類的父分類ID
private string ciDescription;//分類描述
private int ciLayer;//分類所屬層次
//構造函數
public CategoryInfo() { }
public CategoryInfo(int cID, string cName, int cParent, string cDescription, int cLayer)
{
this.ciID = cID;
this.ciName = cName;
this.ciParent = cParent;
this.ciDescription = cDescription;
this.ciLayer = cLayer;
}
//屬性
public int CategoryID
{
get{ return ciID;}
set { ciID = value;}
}
public string CategoryName
{
get{ return ciName;}
set { ciName = value; }
}
public int CategoryParent
{
get{ return ciParent;}
set { ciParent = value; }
}
public string CategoryDescription
{
get { return ciDescription; }
set { ciDescription = value; }
}
public int CategoryLayer
{
get { return ciLayer; }
set { ciLayer = value; }
}
}
獲取子分類的存儲過程
CREATE PROCEDURE [dbo].[category_getChild]
@cName nvarchar(20)
AS
BEGIN
DECLARE @tmpID int
SELECT @tmpID=ciID FROM CategoryInfo
WHERE RTRIM(ciName) = RTRIM(@cName)
if(@tmpID IS NOT NULL)
SELECT * FROM CategoryInfo
WHERE ciParent = @tmpID
ORDER BY ciLayer
END
獲取子分類的函數
public IList GetChildCategories(IList cInfos,string cName)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("category_getChild", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter(PARAM_CNAME, SqlDbType.NVarChar, 20));
cmd.Parameters[PARAM_CNAME].Value = cName;
IList tmpNames = new List(); //臨時存儲獲取的子
try
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
CategoryInfo cInfo = new CategoryInfo(
(int)reader["ciID"],
reader["ciName"].ToString(),
(int)reader["ciParent"],
reader["ciDescription"].ToString(),
(int)reader["ciLayer"]
);
string tmpName = reader["ciName"].ToString();
cInfos.Add(cInfo);//添加獲取到的分類到cInfos
tmpNames.Add(tmpName);//添加獲取到的子分類名到tmpNames
}
}
}
catch
{
throw new ApplicationException("獲取分類出錯!");
}
finally
{
con.Close();
}
foreach(string c in tmpNames)
{
cInfos = GetChildCategories(cInfos,c); //遞歸運算。繼續獲取子分類
}
return cInfos;
}
說明:在該函數中,tmpNames如果換成是IList,即它添加的元素與cInfos是一樣的時,如果要移除其中的一項,則cInfos中會同時移除一項。因為CategoryInfo是類,是引用類型的,而非值類型。所以tmpNames采用了string類型,以避免這個問題。
對上面這個函數直接調用還稍嫌麻煩,上層程序還需要建立一個IList對象,因此可以增加一個函數來調用上面的函數。這樣,上層程序只需要提供分類名,以及是否包含本級分類兩個參數就可以了。
//獲取子分類,其中布爾參數表示是否包含本級分類
public IList GetCategories( string cName, bool IsIncludeSelf)
{
IList cInfos = new List();
cInfos = GetChildCategories(cInfos, cName);
if (IsIncludeSelf == true)
{
cInfos.Insert(0, GetByName(cName));//根據名字獲取分類,這個很簡單,本文略。
}
return cInfos;
}
注意:采用這種方式時,WEB服務器獲取子分類時要在數據庫服務器之間有多次往返,降低了性能。采用存儲過程實現遞歸邏輯,直接返回子分類列表的方式應該有更好的性能,尤其是Web服務器與數據庫服務器不位于同一臺服務器上時,更會受網絡影響。

以上就是關于C#遞歸方法實現無限級分類顯示效果的全部內容,更多相關內容,請繼續關注錯新技術頻道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交视频| 国产欧美日韩专区发布| 97国产suv精品一区二区62| 国产成人综合亚洲| 日本午夜精品理论片a级appf发布| 国产精品视频区1| 中文字幕在线观看日韩| 青青精品视频播放| 欧美大片欧美激情性色a∨久久| 亚洲成人久久电影| 亚洲欧美在线免费观看| 91麻豆桃色免费看| 久久国内精品一国内精品| 欧美高清videos高潮hd| 精品视频—区二区三区免费| 日韩成人在线播放| 亚洲国产美女久久久久| 欧美午夜性色大片在线观看| 最新69国产成人精品视频免费| 7777精品久久久久久| 91免费观看网站| 日韩精品免费在线播放| 国产精品黄页免费高清在线观看| 久久亚洲精品国产亚洲老地址| 久久精品电影一区二区| 91久久精品视频| 欧美在线影院在线视频| 国内精品久久久久久影视8| 欧美日韩国产丝袜美女| 国产a∨精品一区二区三区不卡| 17婷婷久久www| 91精品国产色综合久久不卡98口| 亚洲系列中文字幕| 成人精品视频在线| 欧美国产日韩二区| 欧美黑人性视频| 亚洲成成品网站| 国产v综合v亚洲欧美久久| 欧美视频13p| 日韩一区二区精品视频| 日本欧美在线视频| 亚洲欧洲日产国码av系列天堂| 欧美激情国产高清| 97视频在线播放| 国产精品久久久久久久久久免费| 亚州成人av在线| 精品中文字幕在线| 国产亚洲美女久久| 亚洲成人aaa| 亚洲精品自在久久| 亚洲人精选亚洲人成在线| 欧美精品videossex88| 国产一区二区动漫| 国产一区二区三区免费视频| 国产成人精品av在线| 欧美超级免费视 在线| 久久中文久久字幕| 欧美国产乱视频| 久久伊人精品天天| 亚洲黄色av女优在线观看| 国产精品久久久av| 久久久久在线观看| 亚洲图中文字幕| 欧美乱大交做爰xxxⅹ性3| 亚洲成色777777女色窝| 欧美另类老女人| 亚洲精美色品网站| 精品亚洲一区二区| 少妇高潮久久77777| 久久精品99无色码中文字幕| 97精品国产97久久久久久| 亚洲国产一区二区三区四区| 中文字幕av一区二区三区谷原希美| 国自在线精品视频| 亚洲欧美日韩天堂一区二区| 一区二区三区视频在线| 精品国产一区二区三区四区在线观看| 96pao国产成视频永久免费| 北条麻妃99精品青青久久| 亚洲成人久久久久| 国产精品∨欧美精品v日韩精品| 成人黄色在线播放| 国产精品69av| 激情懂色av一区av二区av| 久久久影视精品| 亚洲日韩中文字幕在线播放| 日韩亚洲第一页| 久久精品国产视频| 中文字幕亚洲欧美日韩2019| 国产日韩中文在线| 国产性色av一区二区| 色偷偷av一区二区三区乱| 欧美电影在线观看| 亚洲女成人图区| 精品国产乱码久久久久久婷婷| 欧美日本高清一区| 亚洲男人天堂2024| 国产精品视频自在线| 国产日韩在线亚洲字幕中文| 国产成人在线一区| 欧美精品久久久久a| 欧美老妇交乱视频| 久久天堂电影网| 91久久久久久久久久久久久| 人人做人人澡人人爽欧美| 神马国产精品影院av| 日韩一区二区在线视频| 日韩在线视频免费观看高清中文| 欧美在线中文字幕| 亚洲精选在线观看| 久久69精品久久久久久国产越南| 欧美亚洲激情视频| 久久这里只有精品视频首页| 国产精品一区二区久久国产| 色中色综合影院手机版在线观看| 国产91精品不卡视频| 国产欧美精品一区二区三区介绍| 国产精品麻豆va在线播放| 尤物精品国产第一福利三区| 亚洲一区免费网站| 亚洲国产精品悠悠久久琪琪| 国产91精品久久久| 日韩欧美一区二区三区久久| 日韩在线视频免费观看| 在线视频中文亚洲| 欧美激情精品久久久久久大尺度| 黄网站色欧美视频| 亚洲精品456在线播放狼人| 国产精品久久网| 秋霞成人午夜鲁丝一区二区三区| 91夜夜揉人人捏人人添红杏| 国产999精品视频| 国产91露脸中文字幕在线| 国产精品久久9| 久久久日本电影| 精品久久久久久| 91高潮精品免费porn| 亚洲一区二区三区777| 97久久精品在线| 日韩精品免费在线视频| 国产精品亚洲美女av网站| 欧美一级大片在线免费观看| 亚洲国产中文字幕在线观看| 欧美极品第一页| 在线观看亚洲区| 亚洲一区二区三区xxx视频| 亚洲欧洲在线观看| 日韩av免费在线观看| 欧美日韩国产麻豆| 国产精品久久久久久久久久小说| 日韩在线视频线视频免费网站| 91老司机在线| 国外成人在线直播| 亚洲视频一区二区三区| 91超碰中文字幕久久精品| 欧美电影电视剧在线观看| 亚洲国产99精品国自产| 亚洲欧美日韩中文在线| 国内精品国产三级国产在线专| 亚洲成人激情在线观看| 亚洲少妇激情视频| 国产视频丨精品|在线观看| 91最新国产视频| 欧美一级bbbbb性bbbb喷潮片|