Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
如何在不应用的情况下从LINQ左联接中获得前1个结果_Linq_Entity Framework 4 - Fatal编程技术网

如何在不应用的情况下从LINQ左联接中获得前1个结果

如何在不应用的情况下从LINQ左联接中获得前1个结果,linq,entity-framework-4,Linq,Entity Framework 4,我有一个主表,我打算使用LINQ的左连接 不幸的是,左连接将结果相乘(我只需要从中得到前1个结果) 问题来了:我的查询应该与SQL 8一致 因此,当我使用以下查询时: var query = from user in context.User join group in context.Groups on user.ID equals group.GroupID into groupJoin from

我有一个主表,我打算使用LINQ的左连接

不幸的是,左连接将结果相乘(我只需要从中得到前1个结果)

问题来了:我的查询应该与SQL 8一致

因此,当我使用以下查询时:

var query = from user in context.User                       
            join group in context.Groups on user.ID equals group.GroupID into groupJoin
            from subGroup in groupJoin.Take(1).DefaultIfEmpty()
            select new 
            {
              Name = user.Name,
              GroupName = subGroup!=null ? subGroup.Name : null
            };
我得到一个例外:

执行此查询需要APPLY运算符,该运算符不是 在早于SQL Server 2005的SQL Server版本中受支持


如何替换查询以符合SQL8要求?

使用了没有take(1)的linq查询,然后使用下一个代码:

query = query.Take(1);

不幸的是,我没有要测试的EF4(它在最新的EF6中实现了这一点),但您可以尝试强制使用SQL子查询表达式,如下所示:

var query = from user in context.User
            select new
            {
                Name = user.Name,
                GroupName = (from g in context.Groups where g.GroupId == user.Id select g.Name).FirstOrDefault()
            };

林克太宽了。请提供适当的标签和信息-例如实体框架、版本等。我想这会限制最终查询,只需要1个用户。但我需要限制联接表。