2013-07-18 30 views
0

我有這樣的SQL查詢,需要轉換爲LINQ到實體寫在LINQ這個SQL查詢來實體格式

select kv.KeyID, kv.KeyVotID, v.VotID, v.FullName 
from E_KeyVot kv 
join E_Vot v 
on kv.VotID = v.VotID 
where kv.KeyID=2 
order by v.FullName 

這是我已經試過,但我敢肯定,這是不正確的:

Public Function GetKeyVot() As IQueryable(Of Ems_KeyVot) 
    Try 
    Dim _objQuery As IQueryable(Of Ems_KeyVot, Ems_Vot) = _ 
     From a In Context.Ems_KeyVot 
     Join b In Context.Ems_Vot On a.votid Equals b.votid 
     Where a.keyid = pub_KeyID 
     Order By b.FullName 
    Return _objQuery 
    Catch ex As Exception 
    End Try 
End Function 
+0

如果您顯示迄今爲止已嘗試過的內容,則可能會得到更多回復。這個查詢是相對直接的,所以你不應該有太多的麻煩搞清楚。 –

+0

這是我已經試過,但我敢肯定,這是不正確的: 公共功能GetKeyVot()作爲IQueryable的(中Ems_KeyVot) 嘗試 昏暗_objQuery作爲的IQueryable(中Ems_KeyVot,Ems_Vot)= _ 從融會貫通。 Ems_KeyVot 加入b在Context.Ems_Vot 在a.votid的Equals b.votid 其中a.keyid = pub_KeyID 順序按b.FullName 返回_objQuery 抓住EX作爲例外 結束Try 端功能 – adscnet

回答

0

根據您的查詢,您遇到的問題是您的退貨類型與查詢不符。查詢返回一個IQueryable(Of Ems_KeyVot,Ems_Vot),但是你的函數需要一個IQueryable(Of Ems_KeyVot)。

在您的查詢中,您正在投影兩個表中的值。既然你不能從你的函數返回一個匿名類型,您需要創建另一個類返回結果:

Public Class Votes 
    Public Property KeyID As Integer 
    Public Property KeyVotID As Integer 
    Public Property VotID As Integer 
    Public Property FullName As String 
End Class 

有了這一點,你可以按如下修改查詢:

Dim _objQuery As IQueryable(Of Ems_KeyVot, Ems_Vot) = _ 
    From a In Context.Ems_KeyVot 
    Join b In Context.Ems_Vot On a.votid Equals b.votid 
    Where a.keyid = pub_KeyID 
    Order By b.FullName 
    Select New Votes With { .KeyID = a.KeyID, .KeyVotID = a.KeyVotID, .VotID = b.VotID, .FullName = b.FullName } 

而且改變你的功能定義爲

Public Function GetKeyVot() As IQueryable(Of Votes) 

另一個說明,我看到你有一個try catch塊,但你沒有做任何異常。如果您無法處理異常,請移除該塊並讓其冒泡到可能的位置。

+0

我不不明白我爲什麼應該創建一個投票類? – adscnet

+0

由於您沒有從一個表或另一個表返回值,因此需要從查詢中投影匿名類型。但是,由於您無法命名它(匿名),因此無法傳遞匿名類型作爲您的函數的結果。因此,您需要投影到可以命名(投票)的類型。 –

+0

它沒有工作我在上下文行上得到錯誤'Ems_KeyVot'不是System.Web.HttpContext的成員。 他們爲什麼是匿名的?您建議的票類中的所有屬性都是其他兩個實體/表KeyVot&Vot中的現有屬性。 我無法發佈更多的細節在她的實際人數是有限的PLZ檢查我的博客我貼的實體細節我正在處理希望會更清楚: http://ahmad0darwiche.blogspot.com/2013 /07/linq-to-entity-error.html – adscnet