开发者

Query In Linq using joins

I have a query from sql but I can't seem to make it work in linq here is the query from sql server:

SELECT     MembersBU.MemberID, MembersB开发者_StackOverflow社区U.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)

and here is the linq query:

 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};

any help is appreciated.


You can't use sql style where clause! You must use the language style. It looks like c# - you need to use == instead:

 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};

And && instead of &.

It might be easier to use this query - because it's not an anonymous type:

IQueryable<MembersBU> = from M in MembersBUs 
     where (M.GroupMember.GroupID == 3) && (M.EmailCap == 1) 
     select M;


You just need to use && instead of & and == instead of =. Otherwise, your Linq query seems OK to me...


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}; 

The where clause uses normal C# syntax, == for equality and && of logical AND

Also, if you have the proper foreign-key relationship set up for the tables, you don't need to explcited state the join. Linq will infer it automatically:

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}; 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜