天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

[c#]asp.ent下開(kāi)發(fā)中Tag的開(kāi)發(fā)技巧

網(wǎng)站開(kāi)發(fā)常用關(guān)鍵字(tag),一般需要獲得最多的被采用的Tag,也就是流行詞。
通常思路是將關(guān)鍵字tag保存到單獨(dú)表中,然后在其他表中根據(jù)一組id進(jìn)行對(duì)多個(gè)關(guān)鍵字進(jìn)行標(biāo)識(shí)。因?yàn)橐粋€(gè)文章可以選擇多個(gè)tag,查詢的時(shí)候頗為麻煩。
所以我在開(kāi)發(fā)中利用了這樣的方法,當(dāng)然不見(jiàn)得多高明 :),分享下經(jīng)驗(yàn)。

將tag直接保存在文章的表中,如Tag字段,tag為“c#”和“.NET”,則Tag字段值為“c#/.NET”就是依/符號(hào)分割tag,這樣數(shù)據(jù)庫(kù)中保存的是字符串了。單文章顯示的時(shí)候可以直接分割成數(shù)組顯示,減少表的關(guān)聯(lián),提高了效率。
當(dāng)需要顯示最近流行詞的時(shí)候。
查詢所有的tag
select tag from 表
利用DataReader把輸出結(jié)果相加起來(lái)。然后根據(jù)分隔符轉(zhuǎn)化為字符串,剩下的就是對(duì)字符串進(jìn)行排序,根據(jù)tag重多少進(jìn)行。并返回重復(fù)的數(shù)量,見(jiàn)代碼。為方便查看,我都寫在了一個(gè)ASPx頁(yè)面中了。
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="XXXX.BLL" %>
<%@ Import Namespace="XXXX.Model" %>
<%@ Import Namespace="XXXX.DBUtility" %>



<script runat="server">

    protected string stext;
    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        using (System.Data.SqlClient.SqlDataReader rd = XXXX.DBUtility.SqlHelper.ExecuteReader(SqlHelper.ConnectionString, System.Data.CommandType.Text, "Select Kinds + '/' FROM XXX", null))
        {
            while (rd.Read())
            {
                sb.Append(rd.GetString(0));
            }
        }
        stext = sb.ToString();

        ToArrayBySort(ToArray(stext, '/'));

    }

    

    /// <summary>
    /// 將字符串根據(jù)分隔符轉(zhuǎn)化為數(shù)組
    /// </summary>
    /// <param name="sourcestring">要轉(zhuǎn)化的字符串</param>
    /// <param name="compart">分隔符</param>
    /// <returns></returns>
    public ArrayList ToArray(string sourcestring, char split)
    {
        CharEnumerator ce = sourcestring.GetEnumerator();
        StringBuilder sb = new StringBuilder();
        ArrayList slist = new ArrayList();

        while (ce.MoveNext())
        {
            if (ce.Current != split)
            {
                sb.Append(ce.Current);
            }
            else
            {
                if (string.Empty == sb.ToString()) continue;
                slist.Add(sb.ToString());
                sb.Remove(0, sb.ToString().Length);
            }
        }
        return slist;
    }

    public class myComparer : IComparer
    {
        int IComparer.Compare(Object x, Object y)
        {
            return ((new CaseInsensitiveComparer()).Compare(((SortItem)y).Count, ((SortItem)x).Count));
        }
    }

    public class SortItem
    {
        private string itemname;
        private int count;
        public SortItem()
        {
        }
        public string ItemName
        {
            get { return itemname; }
            set { itemname = value; }
        }
        public int Count
        {
            get { return count; }
            set { count = value; }
        }
    }

    public System.Collections.Generic.IList<SortItem> ToArrayBySort(ArrayList slist)
    {
        slist.Sort();
        ArrayList sortList = new ArrayList();
        foreach (object obj in slist)
        {
            SortItem sItem = new SortItem();
            sItem.ItemName = obj.ToString();
            sItem.Count = 1;
            if (sortList.Count == 0) { sortList.Add(sItem); continue; }
            if (obj.ToString() == ((SortItem)sortList[sortList.Count - 1]).ItemName)
            {
                sItem.Count = ((SortItem)sortList[sortList.Count - 1]).Count + 1;
                sortList.RemoveAt(sortList.Count - 1);
            }
            sortList.Add(sItem);
        }
        myComparer myCm = new myComparer();
        sortList.Sort(myCm);

        System.Collections.Generic.IList<SortItem> iList = new System.Collections.Generic.List<SortItem>();
        foreach (object obj in sortList)
        {
            iList.Add((SortItem)obj);
            //Response.Write(((SortItem)obj).ItemName + "-" + ((SortItem)obj).Count.ToString() + "<br />");
        }
        return iList;

    }
</script>

AspNet技術(shù)[c#]asp.ent下開(kāi)發(fā)中Tag的開(kāi)發(fā)技巧,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 丝瓜涩涩屋黄瓜香蕉丝瓜 | 最近2019中文字幕MV免费看 | 九九色精品国偷自产视频 | 老头xxx| 同桌上课把奶露出来给我玩 | 国偷自产AV一区二区三区健身房 | xx顶级欧美熟妞xxhd | 欧美午夜a级精美理论片 | 在线观看免费小视频 | 久久精品动漫网一区二区 | 4399亚洲AV无码V无码网站 | 亚洲免费视频在线 | 男人有噶坏 | 哇嘎在线精品视频在线观看 | 色欲天天婬色婬香影院 | 蜜柚免费视频高清观看在线 | 亚洲一二三产品区别在哪里 | 中文字幕 亚洲 有码 在线 | 牢记永久免费网址 | 亚洲午夜久久久久久久久电影网 | 九九免费高清在线观看视频 | 青春草久久| 亚洲AV永久无码精品澳门 | 亚洲AV天堂无码麻豆电影 | 色婷婷亚洲五月 | 秋霞午夜鲁丝片午夜精品久 | 国产免费人成在线看视频 | 亚洲日本乱码中文论理在线电影 | 久久热r在线视频精品 | 日本中文字幕巨大的乳专区 | 国产高清视频在线播放www色 | 成在线人免费 | RUNAWAY韩国动漫免费网 | 九九热只有精品 | 同时被两个男人轮流舔 | 国产乱码卡二卡三卡4W | a在线免费观看视频 | 亚洲成a人不卡在线观看 | 天天爽夜夜爽 | 猫咪av永久最新域名 | 国产精品无码麻豆放荡AV |