【发布时间】:2015-03-15 15:04:52
【问题描述】:
我有一个表(比如本例中的 DataTable),其中包含层次结构记录(id、ParentId、IsEmergency):
ParentId=0 表示根。
所以我们有这个:
0
|
+--- 4706606
|
+--- 4706605
|
+--- 4666762
|
+--- 4668461
|
+--- 4706607
我只显示那些有parentId=0的记录
但我想添加另一个逻辑列,其中指出“此父级在它的一个子级/子级中具有 IsEmergency=true
所以我来了
id parentId hasEmergencyInOneOfItsChild
-------------------------------------------------------
4706606 0 false
4706605 0 false
4666762 0 true
问题:
如何通过递归 linq 实现它?
为方便起见,我创建了这个数据表:
DataTable dt = new DataTable("myTable");
dt.Columns.Add("id", typeof (int));
dt.Columns.Add("parentId", typeof (int));
dt.Columns.Add("isEmergency", typeof (bool));
DataRow row = dt.NewRow();
row["id"] =4706606;
row["parentId"] = 0;
row["isEmergency"] =false;
dt.Rows.Add(row);
row = dt.NewRow();
row["id"] =4706605;
row["parentId"] = 0;
row["isEmergency"] = false;
dt.Rows.Add(row);
row = dt.NewRow();
row["id"] =4666762;
row["parentId"] = 0;
row["isEmergency"] =false;
dt.Rows.Add(row);
row = dt.NewRow();
row["id"] =4668461;
row["parentId"] = 4666762;
row["isEmergency"] = false;
dt.Rows.Add(row);
row = dt.NewRow();
row["id"] =4706607;
row["parentId"] = 4668461;
row["isEmergency"] = true;
dt.Rows.Add(row);
我尝试了一些东西,但它很讨厌而且效率不高
【问题讨论】:
-
您正在寻找将从哪里检索数据的 Linq 查询?实际的数据源是什么?
-
@haim770 不。我说的是内存中的 Linq,用于已经存在的数据源(内存中的数据表)。这里不涉及 SQL。
-
@haim770 这就像一个论坛。每个问题都有一个父问题。
-
“我尝试了一些东西,但它很讨厌而且效率不高”——你尝试了什么?它奏效了吗?它与您想要的具体方式有何不同?请提供a good, minimal, complete code example,展示您目前所获得的信息。