以下代码使用linq命中数据库3次。 (使用LinqPad进行测试)
我可以在t-sql中编写语句,并使用select中的一个选中的一个数据库命中执行相同的调用。
LINQ(3次数据库点击)
var cId = "11";
int[] eIds = (
from e in App_events
where e.cId == cId && e.CategoryID == 3 && e.Active
select e.Id).ToArray();
int[] tIds = (
from t in App_event_tasks where eIds.Contains(t.EventID)
select t.ActionID).ToArray();
var data = (
from tr in App_trackings
where tIds.Contains(tr.ActionID)
select tr).ToList();
data.Dump();
SQL(一个数据库命中)
select * from app_tracking where actionID in
(
select actionID from app_event_task where eventID in (
select id from app_event where cId = 11 and categoryID = 3 and active = 1
)
)
如何在Linq中重写此内容,以便只访问一次数据库?