2016-12-16 43 views
1

我有两个表,我想使用LINQ查询LINQ的C#连接表,如果两个字段的值在另一个表

表1称为活动具有以下字段加入存在 ID 码 说明

表2名为预计值具有以下字段 TASK_ID pred_task_id pred_type

我想LINQ查询加入两个表,并返回当且仅当这两个值TASK_ID和pred_task_id表1.ID

存在我有一个刺在它没有成功

from pre in pred.AsEnumerable() 
join act in activities.AsEnumerable() 
on pre.Field<string>("task_id") equals act.Id 
where (pre.Field<string>("task_id") == activity.Id) 
select new 
{ 
    Pred = getTaskbyID(pre.Field<string>("pred_task_id"), activities), 
    Succ = getTaskbyID(pre.Field<string>("task_id"),activities), 
    RelationshipType = pre.Field<string>("pred_type") 

}); 

此代码不执行什么我的目标实现。如果activity.id中存在pred.task_id,它将返回所有活动的列表。我想做另一个过滤器来确保pred.pred_task_id也存在于活动表中。

+0

再拍'join'到'activities'上pred.pred_task_id? –

+0

如果你正在加入,不会''pre.Field (“task_id”)* *已经等于*'activity.Id'? –

+0

我尝试添加另一个未达到目标的连接。 –

回答

1

你需要改变你的where条款:

where activities.Any(a=> a.Id == pre.Field<string>("pred_task_id")) 
+0

Mark, 我已经尝试过了,您的代码正如预期的那样工作。非常感谢 –

+0

您可以点击复选标记✔接受此答案 –

相关问题