Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架使用左连接lambda加载数据_C#_Entity Framework_Linq_Asp.net Core_.net Core - Fatal编程技术网

C# 实体框架使用左连接lambda加载数据

C# 实体框架使用左连接lambda加载数据,c#,entity-framework,linq,asp.net-core,.net-core,C#,Entity Framework,Linq,Asp.net Core,.net Core,我想从一个特定的id加载包含lambda详细信息的列表 我使用以下代码进行了尝试: // Load User Visitor list var list = await Context.UserVisitors .Where(s => s.UserId.Equals(userOwner.Id)) .Select(s => s.UserVisitorId)

我想从一个特定的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)));
}
代码可以工作,但效率不高。我怎样才能在一个请求中完成这件事


提前谢谢。

我有点瞎,因为我不知道你的模型的所有关系,但下面你可以找到我认为是你的模型,如果你编辑你的问题,我也许可以给你一个准确的答案:

var UserOwnerVisitorsList = from uv in Context.UserVisitors
                            join u in Context.User
                            on uv.UserId equals u.Id
                            join det in Context.Details
                            on det.UserId equals u.Id 
                            join set in Context.Settings
                            on set.UserId equals u.UserId
                            where uv.UserId == userOwner.Id
                            select u;

我有点盲目,因为我不知道你的模型的所有关系,但下面你可以找到我认为是你的模型,如果你编辑你的问题,我也许可以给你一个确切的答案:

var UserOwnerVisitorsList = from uv in Context.UserVisitors
                            join u in Context.User
                            on uv.UserId equals u.Id
                            join det in Context.Details
                            on det.UserId equals u.Id 
                            join set in Context.Settings
                            on set.UserId equals u.UserId
                            where uv.UserId == userOwner.Id
                            select u;

为什么你有两个“等待”?您只需要一个。在第一个wait方法中,im获取用户的所有ID。之后,我将用户数据(如设置、详细信息)加载到列表中。我想把它作为一个数据库查询和一个等待。当前我正在使用丑陋的foreach查询数据。@TimoFalter在最后一行中有一种删除foreach的方法,类似这样:……FirstAsync(u=>list.Contains(u.Id)。这将删除您的foreach。但是,如果您真的要对数据库进行一次查询,则需要通过执行联接操作Linq@Bruno是的,没错。我需要一个联接操作,这就是我创建此问题的原因。我如何才能做到这一点?为什么有两个“等待”?您只需要一个。在第一个等待方法中,我获取用户的所有ID。然后,我将用户数据(如设置、详细信息)加载到一个列表中。我想将其作为一个数据库查询,一个等待。目前,我使用一个丑陋的foreach来查询数据。@TimoFalter有一种方法可以删除您的foreach,类似于这样,在e最后一行:…..FirstAsync(u=>list.Contains(u.Id))。这将删除您的foreach。但是,如果您真的要对数据库进行一次查询,则需要通过执行连接操作Linq@Bruno是的,没错。我需要一个联接操作,这就是我创建此问题的原因。我如何才能做到这一点?