Tag:

如何使用LINQ合并树(和总和计数)?

说我有这些课程: public class Option { public int OptionID { get; set; } public bool IsSelected { get; set; } } public class Product { public int ProductID { get; set; } public int Quantity { get; set; } public List Options { get; set; } } 假设在将一些Product对象添加到List之后,这将是我的结果 2x Product 1 OptionID 1 OptionID 1 OptionID […]

c#从邻接树中排序数据

我有一堆数据将表示为树。 我正在使用的控件要求正确排序数据。 这是每个节点的结构: public class TreeNode { public Guid id { get; set; } public string name { get; set; } public int level { get; set; } public Guid? parent { get; set; } public bool isLeaf { get; set; } } 我需要一种方法来对数据进行排序,以便我有一个TreeNodes列表,其中首先是root用户,然后是子节点,依此类推。 换句话说,所有直接孩子都需要跟随列表中的父母。 我还想按名称对子节点和叶节点进行排序。 ( > =可扩展, o =叶) root > level1a > […]

垃圾收集孤立对象(树节点)适用于“release-exe”,但不适用于VS-debugger

情况 根据这个已接受的答案 ,如果“ GC”看到’2个或更多对象的循环引用,这些对象未被任何其他对象或永久GC句柄引用,则将收集这些对象。 我想知道垃圾收集是否适用于一个甚至没有内容的超级简单树结构,只是带有父级和子级引用的树节点。 想象一下,你创建一个根节点为它添加一个子节点,然后为子节点添加一个子节点等等,所以不是一个树,而是更像一个列表(每个节点最多只有一个子节点和一个父节点)。 如果我们理解上面的答案,然后我们删除了root的子节点以及该子节点内节点的所有引用,垃圾收集器应该清理子树。 问题描述 如果你看一下下面测试代码中的Main方法,当从Release-directory运行exe时,我得到的行为我预计内存消耗会增加到~1GB然后下降到~27MB(在1之后)。 GC.collect再次向上然后再降低到~27MB(对于2. GC.collect)。 现在当它在调试器中运行时,内存消耗达到~1GB,而1.GC.collect内存消耗保持精确到达1.6GB,第二个for循环需要时间,然后我最后在第二个for循环中得到一个OutOfMemoryException 。 问题 为什么我在调试器中会出现这种行为? 在调试期间不应该进行垃圾收集工作,我是否遗漏了一些关于调试器的信息? 旁注 我正在使用visual studio 2010 Express版 我只在这里调用GC.Collect()用于特定的测试目的,以确保应该进行垃圾收集。(我不打算正常使用它) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Tree { class Program { static void Main(string[] args) { TreeNode root = new TreeNode(null); // the null-argument is the parent-node TreeNode node = […]

linq嵌套列表包含

我有一个问题,你在那里的linq专家! 在组件实例的嵌套列表中,我需要知道其中是否存在特定类型的组件。 可以用linq来表达吗? 考虑到可能有application.Components [0] .Components [0] .Components [0] …我的问题是面向linq中的递归查询! 我给你留下实体让你对模型有所了解。 public class Application { public List Components { get; set; } } public class Component { public ComponentType Type { get; set; } public List Components { get; set; } } public enum ComponentType { WindowsService, WebApplication, WebService, ComponentGroup }

使用c#递归地构建具有父子关系的树

我有一个列表,我想转换为树结构。 如何将其转换为树形结构? 我通过递归检查父子关系C# thread查看了构建树类型列表,但由于我的类中的键是字符串,我不能使用该解决方案。 请帮忙 internal class Program { private static void Main(string[] args) { List nodeList = new List(); node n = new node(“A”, “A1”, null, 1); nodeList.Add(n); n = new node(“B”, “A2”, “A1”, 2); nodeList.Add(n); n = new node(“C”, “A3”, “A1”, 2); nodeList.Add(n); n = new node(“D”, “A4”, “A1”, 2); nodeList.Add(n); n = […]

在具有子列表的List 中递归读取XML树结构

我有这样的XML: 我有一个属性Name的成员类。 如何使用最新的.NET技术以递归方式将每个单元及其子单元读入多个通用List ,这可以再次具有子List ?

树中带有yield return元素顺序的递归

我有一个递归函数,在给定起始根节点的情况下返回所有子树节点。 private IEnumerable getAllNodesRecursively(Node subnode) { foreach (Node node in subnode.Nodes) getAllNodesRecursively(node); yield return subnode; } 对于以下树结构: A | +–B | +–C | | | +–D | +–E 当我尝试迭代时: foreach (Node n in getAllNodesRecursively(a)) { Console.WriteLine(n); } 该函数返回唯一的A值。 我希望使用yield-return和递归,并检索Preorder中的元素(在本例中为A,B,C,D,E)。 (如果我把收益率的回报放在foreach之前,那么foreach永远不会发生)。 这可能吗?

将树序列化为Json对象

我有以下课程: TreeNode.cs public class TreeNode : IEnumerable { public readonly Dictionary _children = new Dictionary(); public readonly string Id; public TreeNode Parent { get; private set; } public TreeNode(string id) { this.Id = id; } public TreeNode GetChild(string id) { return this._childs[id]; } public void Add(TreeNode item) { if (item.Parent != null) { item.Parent._childs.Remove(item.Id); } […]

家谱树控制

我(由我的妻子)负责创建一个程序,让她跟踪我们家庭两侧的家谱。 有没有人知道代表这类信息的成本效益(免费)控制。 我正在寻找的是一个修改过的组织结构图表/树。 修改是任何节点应该有2个父节点(EG一个孩子应该有一个母亲/父亲)。 到目前为止我提出的解决方案是拥有2棵树,一棵祖先树和一棵后代树,每个树被检查为每个树的根节点。 它有效,但有点笨重。 我主要在c#WinForms中工作,因此.Net类型控件或源代码是首选。

如何实现非二叉树

我在实现非二叉树时遇到问题,其中根节点可以具有任意数量的子节点。 基本上,我想了解一下如何使用它的一些想法,因为我确实编写了一些代码,但我仍然坚持下一步该做什么。 顺便说一句,我根本不能使用任何集合类。 我只能使用系统。 using System; namespace alternate_solution { // [root] // / / \ \ // text text text text class Node//not of type TreeNode (since Node is different from TreeNode) { public string data; public Node child; public Node(string data) { this.data = data; this.child = null; } } }