Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 Lambda表达式的SQL查询_Sql_Linq_Lambda - Fatal编程技术网

对LINQ Lambda表达式的SQL查询

对LINQ Lambda表达式的SQL查询,sql,linq,lambda,Sql,Linq,Lambda,我正在尝试将一个包含带有GROUPBY子句的左外部联接的SQL转换为LINQ Lambda表达式 我需要转换的SQL是:- SELECT m.MemberExternalPK FROM Member.Member AS m LEFT OUTER JOIN Member.Account AS a ON m.MemberID = a.MemberID GROUP BY MemberExternalPK HAVING COUNT(AccountID) = 0 我已设法使其在成员和帐户之间的内部联接(

我正在尝试将一个包含带有GROUPBY子句的左外部联接的SQL转换为LINQ Lambda表达式

我需要转换的SQL是:-

SELECT m.MemberExternalPK
FROM Member.Member AS m LEFT OUTER JOIN Member.Account AS a ON m.MemberID = a.MemberID
GROUP BY MemberExternalPK
HAVING COUNT(AccountID) = 0
我已设法使其在成员和帐户之间的内部联接(对于帐户计数=1)下正常工作,但对于计数为0的帐户,这不起作用(因此需要左外部联接):-


我一直在尝试使用.DefaultIfEmpty()关键字,但到目前为止都没有成功。任何帮助都将不胜感激:)

我想这就是你想要的:

查询语法

var members = new List<Member>
{
    new Member {MemberId = 1, MemberExternalPk = 100},
    new Member {MemberId = 2, MemberExternalPk = 200}
};

var accounts = new List<Account>
{
    new Account {AccountId = 1, MemberId = 1}
};

var query =
    from m in members
    join a in accounts on m.MemberId equals a.MemberId into ma
    from ma2 in ma.DefaultIfEmpty()
    where ma2 == null
    group ma2 by m.MemberExternalPk into grouped
    select  new {grouped.Key};
var成员=新列表
{
新成员{MemberId=1,MemberExternalPk=100},
新成员{MemberId=2,MemberExternalPk=200}
};
var账户=新列表
{
新帐户{AccountId=1,MemberId=1}
};
变量查询=
成员中的m
将m.MemberId等于a.MemberId的帐户加入ma
从ma.DefaultIfEmpty()中的ma2
其中ma2==null
通过m.MemberExternalPk将ma2分组为分组
选择新{grouped.Key};
本例的结果是只返回数字200。因为它只会为没有帐户的成员返回MemberExternalPk。i、 e.由于MemberId 2没有相关的Account对象,因此它不包括在Reuselts中

var list = members.GroupJoin(accounts,m=>m.MemberId, a => a.MemberId,
                (m,a) => new {m,a})
                .Where(x=>x.a.Count()==0)
                .Select(s=>s.m.MemberExternalPk);
var list = members.GroupJoin(accounts,m=>m.MemberId, a => a.MemberId,
                (m,a) => new {m,a})
                .Where(x=>x.a.Count()==0)
                .Select(s=>s.m.MemberExternalPk);