2 回答
TA贡献1993条经验 获得超5个赞
尝试这个:
IEnumerable<string> queries = LandingSilo.Relationships
.Where(r => r.RelationshipType == 1)
.Join(
LandingSilo.Nodes,
r => r.SlaveKey,
n => n.Key,
(r, n) => n.Queries.SingleOrDefault(q => q.Seq == r.QueryId))
.Where(q => q != null)
.Select(q => q.Query);
逐行:过滤所有Relationship类型不同于 的 s 1,加入SlaveKey/Key并选择节点中唯一Seq与Relationships相等的查询QueryId。过滤null结果并选择Query属性。InvalidOperationException如果在一个节点匹配中有多个查询,这将抛出一个。
这也可以在 LINQ 关键字语法中完成,如下所示:
IEnumerable<string> queries =
from r in LandingSilo.Relationships
where r.RelationshipType == 1
join n in LandingSilo.Nodes on r.SlaveKey equals n.Key
from q in n.Queries.SingleOrDefault(q => q.Seq == r.QueryId)
where q != null
select q.Query;
TA贡献1871条经验 获得超8个赞
您只需要过滤Queries
. 像下面这样更改最后一个语句
select n.Queries.FirstOrDefault(q => q.Seq == q.QueryId);
- 2 回答
- 0 关注
- 210 浏览
添加回答
举报