我有一个主表,我打算使用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符合性?
答案 0 :(得分:0)
使用没有take(1)的linq-query,然后使用下一个代码:
/usr/bin/php5.6 /tmp/ide-behat.php --format PhpStormBehatFormatter /home/grzegorz/PhpstormProjects/Test/features/scenariusze.feature
Testing started at 14:48 ...
Malformed field path ""
答案 1 :(得分:0)
不幸的是我没有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()
};