2010-06-24 93 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