首页 新闻 会员 周边 捐助

linq查询子级上所有的父级

0
悬赏园豆:100 [已解决问题] 解决于 2012-11-05 09:25

parentPath是插入的时候得到的 比如我现在想在中性笔下在插入一个子节点

(笔芯) 那么他的父路径应该是/文具/笔类/中性笔/  插入的时候需要每层已“/”开头“/”结尾

各位大牛们该怎么写

cnns的主页 cnns | 初学一级 | 园豆:1
提问于:2012-11-02 13:57
< >
分享
最佳答案
0

查它父级的,父亲路径就行了。因为父亲路径已经包含了他的所有祖先。

收获园豆:100
forhells | 小虾三级 |园豆:724 | 2012-11-04 17:46

老实说,你这个肯定是要定级数的,要不然无法保证完整性。而且字数多的话,后面的路径,恐怕就放不下了。

forhells | 园豆:724 (小虾三级) | 2012-11-04 17:48

@forhells: 谢谢 这个办法可行

cnns | 园豆:1 (初学一级) | 2012-11-05 09:24
其他回答(5)
0

你可以插入这样的数据 values("笔芯","3(中性笔)","/文具/笔类/中性笔/(/0/1/3/)")

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-02 14:12
0

上级层数如果能确定的话 可以写。 如果不能确定只能递归

sym_cn | 园豆:798 (小虾三级) | 2012-11-02 14:27

能确定的只有他的上一级 但上上级 上上上级都需要查出来 就如要往中性笔下插入“笔芯” 能知道是“中性笔"下的” 但是/文具/笔类/都要求查出来再插入

支持(0) 反对(0) cnns | 园豆:1 (初学一级) | 2012-11-02 14:32
0

使用递归会比较好点,而且能做到无限的分类

jason2013 | 园豆:1998 (小虾三级) | 2012-11-02 14:45

应该是用递归 可小弟我不会 新手 所以来求一方法

支持(0) 反对(0) cnns | 园豆:1 (初学一级) | 2012-11-02 15:00
0

递归。每次插入的时候 取父级编号。。1种是在Excel里写好了。。直接导入。。2 种你用Winfrom 里做一个导入工具。。因为商品的无限分类 下面有好多。不可能用一个SQL就把所有的商品一下子给添加完了。。。

在 水 一 方 | 园豆:1097 (小虾三级) | 2012-11-02 14:55
1
void Main()
{
     var query=GetClassID(3);
     query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}\t{2}",q.Id,q.Name,q.Parent));
     /*
        Id       Name       Parent
        5        B2         3
        8        D1         5
        9        D2         5
       10        D3         5
     */
}
public IEnumerable<Tim_LinqTable> GetClassID(int p_id)
{
            var query = from c in this.Tim_LinqTables
                        where c.Parent  == p_id
                        select c;
         
           return  query.ToList().Concat(query.ToList().SelectMany(t => GetClassID(t.Id)));              
}

实现思想是递归实现

az235 | 园豆:8483 (大侠五级) | 2012-11-02 15:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册