Linq C#如果另一个表中存在两个字段的值,则连接表

时间:2016-12-16 16:26:16

标签: c# linq

我想使用linq查询加入两个表

表1称为活动具有以下字段 ID 码 描述

名为pred的表2具有以下字段 TASK_ID pred_task_id pred_type

我希望linq查询连接两个表并且当且仅当表1中存在task_id和pred_task_id时才返回值.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")

});

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

1 个答案:

答案 0 :(得分:1)

您需要更改where条款:

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