【发布时间】:2019-09-05 19:08:50
【问题描述】:
我想从特定 id 加载列表,其中包含 lambda 的详细信息。
我用下面的代码试了一下:
// Load User Visitor list
var list = await Context.UserVisitors
.Where(s => s.UserId.Equals(userOwner.Id))
.Select(s => s.UserVisitorId)
.ToListAsync();
foreach (var t in list)
{
UserOwnerVisitors.Add(await Context.User
.Include(u => u.Details)
.Include(u => u.Settings)
.FirstAsync(u => u.Id.Equals(t)));
}
代码有效,但效率不高。如何使用 lambda 在一个请求中做到这一点?
提前致谢。
【问题讨论】:
-
为什么有两个“等待”?你只需要一个。
-
在第一个 await 方法中,我正在获取用户的所有 id。之后,我将设置、详细信息等用户数据加载到列表中。我想将其作为一个数据库查询和一个等待来完成。目前我使用丑陋的 foreach 来查询数据。
-
@TimoFalter 有一种方法可以删除你的 foreach ,在最后一行: ....FirstAsync(u => list.Contains(u.Id). 那会删除你的 foreach。
-
但是,如果你真的想对数据库进行一次查询,你需要通过Linq执行一个join操作
-
@Bruno 是的,没错。我需要一个连接操作,这就是我创建这个问题的原因。我该怎么做?
标签: c# entity-framework linq asp.net-core .net-core