2016-12-16 42 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

您可以點擊複選標記✔接受此答案 –

相關問題