Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Entity framework LINQ连接到顶部(1)_Entity Framework_Linq - Fatal编程技术网

Entity framework LINQ连接到顶部(1)

Entity framework LINQ连接到顶部(1),entity-framework,linq,Entity Framework,Linq,我再一次为LINQ查询的语法而挣扎 我看了看,但我还是很困惑 用户可以有0-n张照片 我有我需要的SQL,但无法解决如何在LINQ中实现这一点。SQL是这样的: SELECT User.Name, Photo.ImageUri FROM User LEFT OUTER JOIN Photo ON Photo.Id = ( SELECT TOP 1 Id FROM Photo WHER

我再一次为LINQ查询的语法而挣扎

我看了看,但我还是很困惑

用户可以有0-n张照片

我有我需要的SQL,但无法解决如何在LINQ中实现这一点。SQL是这样的:

SELECT   User.Name, Photo.ImageUri
FROM     User
LEFT OUTER JOIN     Photo
ON       Photo.Id =
         (
         SELECT  TOP 1 Id 
         FROM    Photo
         WHERE   UserId = User.Id
         )
我正在使用实体框架(.NET Core),并尝试了以下操作:

        var users = _context.Users.Select(x => new
        {
            name= x.Name,
            photo = x.Photos.Select(c => c.ImageUri).FirstOrDefault()
        });

问题是,对于每个用户,它都会在照片上创建一个SELECT。我正在寻找一种解决方案,它不需要对每个用户记录的数据库进行额外的查询。

请不要只发布SQL并要求转换。至少显示一个类模型,以便导航属性和关联的多样性可见。另外,告诉你的目标是什么类型的LINQ(对实体?),并展示你自己的第一次努力。我理解,但我已经非常简化了我的要求,所以我可以在这里展示一个非常简单的例子。我使用的是EF-Core(C#),域与上面的非常不同。这就是为什么我没有包括我尝试过的内容,因为它与用户和照片没有如此简单的关系。很抱歉我尝试过这样的方法:var users=_context.users.Select(x=>new{name=x.name,photo=x.Photos.Select(c=>c.ImageUri.FirstOrDefault());这会导致我想要避免的多次选择。您的LINQ查询很好。您如何知道它会创建多个查询?它不应该这样做,如果它这样做了,那么问题就出在EF核心(它仍然没有发布,您使用的是哪个版本-RC1、RC2等?)我使用的是EF.NET核心RC2。您可以在Visual Studio 2015输出窗口中看到选择。好的,那么也许在最终版本中,它应该是一个类似于SQL的查询,你认为呢?嗯,太糟糕了,我认为RC2应该更接近RTM(没有工具),但谁知道呢。请不要只是发布SQL并要求转换。至少显示一个类模型,以便导航属性和关联的多样性可见。另外,告诉你的目标是什么类型的LINQ(对实体?),并展示你自己的第一次努力。我理解,但我已经非常简化了我的要求,所以我可以在这里展示一个非常简单的例子。我使用的是EF-Core(C#),域与上面的非常不同。这就是为什么我没有包括我尝试过的内容,因为它与用户和照片没有如此简单的关系。很抱歉我尝试过这样的方法:var users=_context.users.Select(x=>new{name=x.name,photo=x.Photos.Select(c=>c.ImageUri.FirstOrDefault());这会导致我想要避免的多次选择。您的LINQ查询很好。您如何知道它会创建多个查询?它不应该这样做,如果它这样做了,那么问题就出在EF核心(它仍然没有发布,您使用的是哪个版本-RC1、RC2等?)我使用的是EF.NET核心RC2。您可以在Visual Studio 2015输出窗口中看到选择。好吧,那么也许在最终版本中,它应该是一个类似于SQL的单一查询,你认为呢?嗯,太糟糕了,我认为RC2应该更接近RTM(w/o工具),但谁知道呢。