我有以下linq查询:
Var q1 = (from t1 in context.Table1
where column = value
select t1).FirstOrDefault();
Var q2 = (from t2 in context.Table2
where column = value
select t2).FirstOrDefault();
据我了解,上面的linq
语句将调用database
两次来获取表数据,但我想以这样的方式编写linq
查询两个表中的数据都在一个数据库中调用。我怎样才能做到这一点?
答案 0 :(得分:4)
您可以通过选择匿名类型来实现此目的:
Var q = (from t1 in context.Table1
where t1.column == value
select t1
)
.Select(t1 => new {
t1 = t1,
t2 = context.Table2
.FirstOrDefault(t2 => t2.column == value);
})
.FirstOrDefault();
var t1 = q.t1;
var t2 = q.t2;
这样它就可以从这一切中进行一次查询。我简化了一下查询部分来获取t2项,但是没有障碍可以使用你写的那个。
答案 1 :(得分:0)
简答:这是不可能的
虽然两个查询都在同一个数据库中,但它们正在处理不同的表, 在创建普通SQL语句时考虑它,您将无法仅在一个
中组合这些两个查询答案 2 :(得分:0)
答案 3 :(得分:-1)
可以使用EF的Include()
方法加载相关实体。
//加载所有博客,所有相关帖子以及所有相关评论
var blogs1 = context.Blogs
.Include(b => b.Posts.Select(p => p.Comments))
.ToList();