[英]ASP.NET MVC2: IQueryable from join
在我的控制器類中,我必須連接兩個表:
var query = from logger in database.LOGGERs
join testcase in database.TESTCASEs on logger.TCID equals testcase.TCID select new {logger, testcase};
在視圖中我試圖調用值,例如:
<% foreach (var testCase in Model.SearchResults)
<td width="200"title="<%= (testCase.SCRIPTNAME %>"
這導致錯誤:
Unable to cast object of type '<>f__AnonymousType1`2[TestAutomationService.Models.LOGGER,TestAutomationService.Models.TESTCASE]' to type 'TestAutomationService.Models.LOGGER'.
那么我需要聲明而不是var才能訪問匿名類型? 我嘗試過使用LOGGER,但它顯然不能讓我訪問TESTCASE。
我正在尋找類似的東西:
foreach (IQuerable<{LOGGER, TESTCASE}> testCase in Model.SearchResults)
...
這是匿名類型的缺點。 一旦您超出了創建它的范圍,就沒有一種簡單的方法可以在不使用反射的情況下訪問其成員。
我的建議是創建另一個具有視圖所需信息的類(視圖模型),並用查詢結果填充它。 這樣您就可以訪問所有內容,因為您使用的類型不再是匿名類型。
我甚至不知道你是否應該在控制器內做Linq。 是的,我知道大多數樣本都表明,但這不是好習慣。
但是,要解決您的問題,您必須創建一個數據傳輸對象。 就像是:
class LoggerTestcase {
public Logger Logger {get;set;}
public Testcase Testcase {get;set;}
}
var query = from logger in database.LOGGERs
join testcase in database.TESTCASEs on logger.TCID equals
testcase.TCID select new LoggerTestcase {Logger = logger, Testcase = testcase};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.