我有一个来自sql的查询,但我似乎无法使它在linq中工作这里是来自sql server的查询:
SELECT MembersBU.MemberID, MembersBU.MemberFirst, MembersBU.MemberLast,
MembersBU.MemberEmail, MembersBU.ValidEmail,
MembersBU.EmailCap
FROM groupMembers INNER JOIN
MembersBU ON groupMembers.MemID = MembersBU.MemberID
WHERE (groupMembers.groupID = 3) AND (MembersBU.EmailCap = 1)
这是linq查询:
var query = from M in MembersBUs
join GM in GroupMembers on M.MemberID equals GM.MemID
where (GM.GroupID = 3) & (M.EmailCap = 1)
select new {M.MemberID, M.MemberFirst, M.MemberLast,
M.MemberEmail, M.ValidEmail, M.EmailCap};
感谢任何帮助。
答案 0 :(得分:1)
你不能使用sql style where子句!您必须使用语言风格。看起来像c# - 你需要使用==代替:
var query = from M in MembersBUs
join GM in GroupMembers on M.MemberID equals GM.MemID
where (GM.GroupID == 3) && (M.EmailCap == 1)
select new {M.MemberID, M.MemberFirst, M.MemberLast,
M.MemberEmail, M.ValidEmail, M.EmailCap};
和&&而不是&。
使用此查询可能更容易 - 因为它不是匿名类型:
IQueryable<MembersBU> = from M in MembersBUs
where (M.GroupMember.GroupID == 3) && (M.EmailCap == 1)
select M;
答案 1 :(得分:0)
您只需使用&&
代替&
和==
代替=
。否则,你的Linq查询对我来说似乎没问题......
答案 2 :(得分:0)
var query = from M in MembersBUs
join GM in GroupMembers on M.MemberID equals GM.MemID
where (GM.GroupID == 3) && (M.EmailCap == 1)
select new {M.MemberID, M.MemberFirst, M.MemberLast,
M.MemberEmail, M.ValidEmail, M.EmailCap};
where
子句使用普通的C#语法,==用于等式和&amp;&amp;逻辑AND
此外,如果您为表设置了正确的外键关系,则不需要对连接进行explcited状态。 Linq会自动推断它:
var query = from M in MembersBUs
where (M.GroupMember.GroupID == 3) && (M.EmailCap == 1)
select new {M.MemberID, M.MemberFirst, M.MemberLast,
M.MemberEmail, M.ValidEmail, M.EmailCap};