对LINQ Lambda表达式的SQL查询
我正在尝试将一个包含带有GROUPBY子句的左外部联接的SQL转换为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 我已设法使其在成员和帐户之间的内部联接(
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);