2010-06-24 91 views
0

我使用.NET 4,我只是想知道是否有一个优化的方式来实现以下。ASP.NET Linq到SQL和嵌套选择

Public Function GetUserByOpenID(ByVal claimedidentifier As String) As User Implements IUserRepository.GetUserByOpenID 
     Dim user = (From u In dc.Users 
        Where u.ID = (From o In dc.OpenIDs 
            Where o.ClaimedIdentifier = claimedidentifier 
            Select o.UserID).FirstOrDefault 
        Select u) 
     Return user 
    End Function 

回答

1

假设所有用户在的OpenID匹配ID:

Dim user = (From u in dc.Users 
      Join o in dc.OpenIDs On u.ID Equals o.UserId 
      Where o.ClaimedIdentifier = claimedidentifier 
      Select u).FirstOrDefault() 
+0

是所有用户在匹配的ID OpenID ...谢谢。 – 2010-06-24 16:02:48

+0

我必须添加到您的示例中的是'.FirstOrDefault',以便我可以返回单个记录。感谢您的帮助。 – 2010-06-24 16:07:45

+0

@rockinthesixstring - 将其添加到示例中。很高兴它的工作。 – 2010-06-24 16:10:37

0
Dim user = dc.OpenIDs 
    .Where(o => o.ClaimedIdentifier == claimedidentifier) 
    .Select(o => o.User) 

我偏爱lambda表达式,自己...

+0

我和你在一起......但这个例子是VB.NET。没有兰姆达斯给他们。 – 2010-06-24 16:32:06