Iqueryable Selectに結合してLinqをSQLに変換します
-
02-10-2019 - |
質問
呼ばれる関数があります GetUserByOpenId
この機能をまったく使用したくない
Public Function GetUserByOpenID(ByVal claimedidentifier As String) As User Implements IUserRepository.GetUserByOpenID
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
Return user
End Function
私が本当にできるようにしたいのは、私の「getusers」関数(iqueryable)を使用して、私のサービスレイヤーに参加することです。
Public Function GetUsers() As IQueryable(Of User) Implements IUserRepository.GetUsers
Dim users = (From u In dc.Users
Select u)
Return users.AsQueryable
End Function
これと同様の機能を使用して、アプリプロテートデータを返す方法がどのように見えるかを誰かが教えてもらえますか
Public Function GetAllUsers() As System.Collections.Generic.IList(Of User) Implements IUserService.GetAllUsers
Return _UserRepository.GetUsers().Where(Function(u) (Not u.isClosed)).ToList
End Function
解決
うーん、OpenIDとユーザーの間にFK関係があるはずですが、そうではないようです。この関係を作成すると、プロパティを介して簡単に通過することができ、クエリをまったく実行する必要はありません(単純な場所を除く)。
所属していません StackOverflow