Linq:其中x = 1,除非y> 3

时间:2010-02-08 06:51:51

标签: linq where-clause

如何在linq中实现这样的功能。在我的linq代码中,它获得了答案userID不等于Question userid的最佳答案。这是为了过滤用户选择自己的帖子作为最佳答案。如果用户选择自己的答案作为最佳答案,则必须至少投票3次。

var AwardedAnswers = from u in context.userinfo
                     select new
                     {
                        u.user_userid,
                        u.user_username,
                        u.user_GravatarHash,
                        Answers = from ans in context.post
                                  let QuestionUserID = (from q in context.post
                                            where q.post_id == ans.post_parentid
                                            select new
                                            {
                                                    q.userinfo.user_userid
                                            }).FirstOrDefault()
                               where ans.userinfo.user_userid == u.user_userid 
                               && !object.Equals(ans.post_parentid, null) 
                               && ans.post_isselected == true 
                                    //this is where my trouble is
                                    //this filters answers made by the original poster
                                    //This should filter unless the Vote count is higher then 2
                               && (ans.userinfo.user_userid != QuestionUserID.user_userid)
                               select new
                               {
                                ans.post_id,
                                    ans.post_parentid
                               }

                      };

1 个答案:

答案 0 :(得分:3)

怎么样:

 && (ans.userinfo.user_userid != QuestionUserID.user_userid
     || ans.upvotes >= 3)

这只是猜测 - 我们不知道你的数据库结构是什么样的。