linq to sql join有多个条件

时间:2012-11-16 17:41:14

标签: linq-to-sql

我知道我们通过使用匿名类在连接中实现了多个条件,但是有人可以确认下面的方法不起作用吗?似乎没有,我很难确认。

    ...
join up in db.UserProfiles on
new { UserId = uf.UserId, IsDeleted = false, IsApproved = true } equals
new { UserId = up.UserId, IsDeleted = up.IsDeleted ?? false, IsApproved = up.aspnet_User.aspnet_Membership.IsApproved }

2 个答案:

答案 0 :(得分:0)

"我想要所有已批准但未删除的用户个人资料"

只需使用linq并尝试不重新创建SQL ...不得不猜测一下关系,但你会得到图片

Var x= From up in db.UserProfiles 
         where up.aspnet_User.aspnet_Membership.IsApproved  == true &&
          (! up.Isdeleted == true)
         select up;

或模仿Coalesce

 Var x = From up in db.UserProfiles 
             where up.aspnet_User.aspnet_Membership.IsApproved  == true &&
             (up.Isdeleted == false || up.Isdelete == null )
             select up;

(我会这样做!在这种情况下是假的,因为null显然有一些问题 - 但我从来没有经历过它们你可以看看LINQ query - null date

答案 1 :(得分:0)

要回答我自己的问题,linq到sql join中的匿名类中的'常量'属性是有效的,并且确实带来了预期的结果。我注意到的意外行为的根本原因是一个完全不同的问题 - Described Here