我在以下两个表中定义了dag结构:
TABLE: ORGANISATION
--------------------------------------------
| | |
| ID | Guid NOT NULL |
| Name | varchar(200) NOT NULL |
| IsTop | bool NOT NULL |
| | |
---------------------------------------------
TABLE: EDGE
--------------------------------------------
| | |
| ID | Guid NOT NULL |
| From | Guid NOT NULL |
| To | Guid NOT NULL |
| | |
---------------------------------------------
使用LINQ,是否可以使用单个查询选择所有ORGANISATION,其中(IsTop==true或没有指向ORGANISATION ID的EDGE with to字段)。
我不知道这是否对你有帮助,但
var query = from org in ORGANISATION
where org.IsTop == "true" ||
!(FROM ed in EDGE
select ed.To).CONTAINS(org.ID)
select org;