c# 简单的遍历问题???,在线等
我现在数据结构如下:
list_id,suplist_id,list_title,list_type
1 0 最新资讯 文章
2 0 产品分类 文章
3 2 农机产品 图片
4 2 产品新闻 文章
5 3 小型农机 图片
6 5 小型机型 图片
我想实现只要本身或子级存在类型为图片的就显示出来
请各位帮帮忙吧
[解决办法]
- SQL code
create table tb(list_id int,suplist_id int,list_title nvarchar(10),list_type nvarchar(10))insert into tb select 1,0,'最新资讯','文章'insert into tb select 2,0,'产品分类','文章'insert into tb select 3,2,'农机产品','图片'insert into tb select 4,2,'产品新闻','文章'insert into tb select 5,3,'小型农机','图片'insert into tb select 6,5,'小型机型','图片'go;with cte as(select * from tb where list_type='图片'union allselect a.* from tb a inner join cte b on a.list_id=b.suplist_id)select distinct * from cte order by list_id/*list_id suplist_id list_title list_type----------- ----------- ---------- ----------2 0 产品分类 文章3 2 农机产品 图片5 3 小型农机 图片6 5 小型机型 图片(4 行受影响)*/godrop table tb
[解决办法]
- C# code
public partial class _Default : System.Web.UI.Page{ Dictionary<int, string> dic; DataTable dt; protected void Page_Load(object sender, EventArgs e) { dic = new Dictionary<int, string>(); dt = GetDataTable(); DataRow[] row = dt.Select("list_type='图片'"); foreach (DataRow r in row) { dic.Add(Convert.ToInt32(r["list_id"]), r["list_title"].ToString()); GetType(Convert.ToInt32(r["suplist_id"])); } foreach (KeyValuePair<int, string> k in dic) Response.Write(k.Key + "==" + k.Value + "<br/>"); } public void GetType(int suplistid) { DataRow[] row = dt.Select("list_id=" + suplistid); foreach (DataRow r in row) { if (!dic.ContainsKey(Convert.ToInt32(r["list_id"]))) dic.Add(Convert.ToInt32(r["list_id"]), r["list_title"].ToString()); if (Convert.ToInt32(r["suplist_id"]) > 0) GetType(Convert.ToInt32(r["suplist_id"])); } } public DataTable GetDataTable() { DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = ConfigurationManager.ConnectionStrings["testConnection"].ConnectionString; SqlDataAdapter da = new SqlDataAdapter("select list_id,suplist_id,list_title,list_type from test", conn); da.Fill(dt); } return dt; }}