我对WPF Treeview Binding有一些复杂的情况.我花了最近两天的时间尝试谷歌,这是我提出的关闭,但它没有解决问题.
情况如下:
我有一个看起来像这样的对象:
public class Category
{
public string Name { get; set; }
public List<Category> Categories { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
public string Name { get; set;
}
Run Code Online (Sandbox Code Playgroud)
每个类别都可以包含对象列表和子类别.我有理由这样做对我和我正在写的应用程序完全有意义.
实际的对象构造可能看起来像这样:
Category - Pharmacy
|-Product - Aspirin
|-Product - Tylenol
|-Category - Tooth Paste
| |-Product - Crest
| |-Product - Colgate
|-Category - Paper Products
|-Category - Toilet Paper
| |-Product - NoName
| …Run Code Online (Sandbox Code Playgroud) wpf treeview binding hierarchicaldatatemplate hierarchical-data
让我们假设我有这样的样本数据:
| Name | ID | PARENT_ID |
-----------------------------
| a1 | 1 | null |
| b2 | 2 | null |
| c3 | 3 | null |
| a1.d4 | 4 | 1 |
| a1.e5 | 5 | 1 |
| a1.d4.f6 | 6 | 4 |
| a1.d4.g7 | 7 | 4 |
| a1.e5.h8 | 8 | 5 |
| a2.i9 | 9 | 2 |
| a2.i9.j10| 10 | 9 |
Run Code Online (Sandbox Code Playgroud)
我想从accountId = …
我想将存在于磁盘上的目录存储到数据库中,同时保持其层次结构/树结构.
这是一个无花果,
(ROOT)
/ \
Dir2 Dir3
/ \ \
Dir4 Dir5 Dir6
/
Dir7
我正在使用SQLite数据库.
请建议我在SQLite数据库中存储上述结构的sql查询.
和一个查询,以便在我选择一个目录时检索目录的完整路径.
即假设我选择Dir6然后我会得到像ROOT/Dir2/dir3/dir7这样的完整路径
我有一个简单的sqlite3表,如下所示:
Table: Part
Part SuperPart
wk0Z wk00
wk06 wk02
wk07 wk02
eZ01 eZ00
eZ02 eZ00
eZ03 eZ01
eZ04 eZ01
Run Code Online (Sandbox Code Playgroud)
我需要运行一个递归查询来查找给定SuperPart及其所有子组的所有对.所以我要说我有eZ00.eZ00是eZ01的超级部件,eZ01是eZ03的超级部件.结果必须不仅包括对(eZ00,eZ01)和(eZ01和eZ03),还必须包括对(eZ00,eZ03).
我知道还有其他方法来定义表格,但我在这里别无选择.我知道如果我知道树的深度,我可以使用几个工会,但我不会总是知道我想去的深度.它有助于拥有像WITH RECURSIVE这样的东西,甚至只是WITH(,,)AS x,但对于我搜索过的东西,这在sqlite中是不可能的,对吧?
有没有办法在sqlite3中执行此递归查询?
更新:
当提出这个问题时,SQLite不支持递归查询,但正如@lunicon所述,SQLite现在支持递归CTE,因为3.8.3 sqlite.org/lang_with.html
我正在开始一个项目,我正处于设计阶段:即,我还没有决定我将使用哪个db框架.我将拥有创建"森林"结构的代码.也就是说,许多树,每棵树都是标准的:节点和边.在代码创建这些树之后,我想将它们保存在db中.(然后最终将它们拉出来)
在db中表示数据的天真方法是具有两个表的关系数据库:节点和边.也就是说,节点表将具有节点id,节点数据等.而边表将是节点id到节点id的映射.
有更好的方法吗?或者给出(有限的)假设我给出的这是最好的方法?如果我们添加树相对较小的假设怎么样 - 将整个树保存为db中的blob会更好吗?在这种情况下我应该使用哪种类型的数据库?请评论速度/可扩展性.
谢谢
嗨很多天我一直在研究MySQL中的这个问题,但我无法弄明白.你们有什么建议吗?
基本上,我有一个类别表,其域名包括:id,name(类别名称)和parent(类别的父ID).
示例数据:
1 Fruit 0
2 Apple 1
3 pear 1
4 FujiApple 2
5 AusApple 2
6 SydneyAPPLE 5
....
Run Code Online (Sandbox Code Playgroud)
有许多级别,可能超过3个级别.我想创建一个sql查询,根据他的层次结构对数据进行分组:parent> child> grandchild>等.
它应该输出树结构,如下所示:
1 Fruit 0
^ 2 Apple 1
^ 4 FujiApple 2
- 5 AusApple 2
^ 6 SydneyApple 5
- 3 pear 1
Run Code Online (Sandbox Code Playgroud)
我可以使用单个SQL查询执行此操作吗?我尝试过并且确实有效的替代方案如下:
SELECT * FROM category WHERE parent=0
Run Code Online (Sandbox Code Playgroud)
在此之后,我再次遍历数据,并选择parent = id的行.这似乎是一个糟糕的解决方案.因为它是mySQL,所以不能使用CTE.
我正在为一个分层数据源编写一个LINQ提供程序.我发现通过编写显示我想如何使用它的示例来设计我的API是最容易的,然后编写代码以支持这些用例.
我遇到麻烦的一件事是在LINQ语句中表达"深度查询"或递归的简单/可重用/优雅方式.换句话说,区分以下内容的最佳方法是:
from item in immediate-descendants-of-current-node where ... select item
Run Code Online (Sandbox Code Playgroud)
与:
from item in all-descendants-of-current-node where ... select item
Run Code Online (Sandbox Code Playgroud)
(编辑:请注意上面这些例子都不一定反映我想要的查询结构.我感兴趣的是表达递归/深度的任何好方法)
请注意我不是问如何实现这样的提供程序,或者如何以允许递归的方式编写我的IQueryable或IEnumerable.我是从一个人编写LINQ查询并利用我的提供者的角度问的 - 他们表达是否想要递归的直观方式是什么?
数据结构类似于典型的文件系统:文件夹可以包含子文件夹的集合,文件夹也可以包含项集合.所以myFolder.Folders表示myFolder的直接子节点的所有文件夹,myFolder.Items包含myFolder中的所有项目.这是网站层次结构的基本示例,非常类似于包含文件夹和页面的文件系统:
(F)Products
(F)Light Trucks
(F)Z150
(I)Pictures
(I)Specs
(I)Reviews
(F)Z250
(I)Pictures
(I)Specs
(I)Reviews
(F)Z350
(I)Pictures
(I)Specs
(I)Reviews
(I)Splash Page
(F)Heavy Trucks
(F)Consumer Vehicles
(I)Overview
Run Code Online (Sandbox Code Playgroud)
如果我写:
from item in lightTrucks.Items where item.Title == "Pictures" select item
Run Code Online (Sandbox Code Playgroud)
表达查询获取Light Trucks下的所有项目或仅仅是直接项目的最直观方式是什么?区分两种意图的最少侵入性,最低摩擦的方式?
我的第一个目标是能够将这个LINQ提供者转变为对LINQ有一个平均理解的其他开发人员,并允许他们编写递归和列表查询,而不给他们编写递归lambda的教程.鉴于用法看起来不错,我可以针对该代码对代码进行编码.
另外澄清:(我真的在吮吸沟通!) - 这个LINQ提供程序是一个外部系统,它不仅仅是走一个对象图,在这个特定的情况下,递归表达式实际上转换成任何类型的真正的递归活动引擎盖下.只需要一种方法来区分"深层"查询和"浅层"查询.
那么,您认为表达它的最佳方式是什么?或者是否有一种标准的表达方式我错过了?
有人可以说明我如何在谷歌应用引擎数据存储中存储和轻松查询分层数据?
我有一个简单的MySQL表,其中包含一个类别列表,级别由parent_id确定:
id name parent_id
---------------------------
1 Home 0
2 About 1
3 Contact 1
4 Legal 2
5 Privacy 4
6 Products 1
7 Support 1
Run Code Online (Sandbox Code Playgroud)
我正试图做一个面包屑的踪迹.所以我有孩子的'id',我想得到所有可用的父母(迭代链,直到我们达到0"Home").可以有任何数量或子行进入无限深度.
目前我正在为每个父级使用SQL调用,这很麻烦.SQL中是否有一种方法可以在一个查询中完成所有操作?
我有700万份生物多样性记录的csv,其中分类学级别为列。例如:
RecordID,kingdom,phylum,class,order,family,genus,species
1,Animalia,Chordata,Mammalia,Primates,Hominidae,Homo,Homo sapiens
2,Animalia,Chordata,Mammalia,Carnivora,Canidae,Canis,Canis
3,Plantae,nan,Magnoliopsida,Brassicales,Brassicaceae,Arabidopsis,Arabidopsis thaliana
4,Plantae,nan,Magnoliopsida,Fabales,Fabaceae,Phaseoulus,Phaseolus vulgaris
Run Code Online (Sandbox Code Playgroud)
我想在D3中创建一个可视化文件,但是数据格式必须是网络,其中每个列的不同值都是上一个特定值的列的子级。我需要从csv转到类似这样的内容:
{
name: 'Animalia',
children: [{
name: 'Chordata',
children: [{
name: 'Mammalia',
children: [{
name: 'Primates',
children: 'Hominidae'
}, {
name: 'Carnivora',
children: 'Canidae'
}]
}]
}]
}
Run Code Online (Sandbox Code Playgroud)
我还没有想到不使用上千个for循环就如何做到这一点的想法。是否有人对如何在python或javascript上创建此网络提出建议?
javascript python data-visualization hierarchical-data d3.js