2013-03-07 33 views
1

我首先使用了Entity Framework 5代碼。我有以下查詢,返回2個不同的對象:如何從IQueryable中檢索不同的對象類型

var query = (from s in DatabaseContext.Servers 
      join c in DatabaseContext.CommandExecutionServers on s.Domain equals c.Domain 
      where s.Id == serverId && c.Active == active 
      select new { s, c }); 

s爲Server class,c是一個CEServer class

如何從查詢中檢索s和c對象,因爲我需要使用它們。我需要這樣的東西:

Server server = s; // first check for nulls and 
server.CEServer = c; // check for nulls as well 

回答

1

如果你相信你會得到只和詳細的一對,你可以使用這個:

Server server = query.Single().s; // first check for nulls and 
server.CEServer = query.Single().c; 

如果沒有,喲你會得到例外

+0

謝謝。如何檢查s和c是否爲空? – 2013-03-08 08:24:18

+0

問題不明確。你想檢查's'和'c'是否都是'null'? – 2013-03-08 10:39:32

+0

是的。他們可能並不總是包含數據。因此,如果s爲null,並且您執行'query.Single()。s',它會拋出一個異常? – 2013-03-08 10:50:42

1

由於您的查詢返回匿名類的對象的序列,你可以從每個返回行列舉您的查詢和訪問sc,像這樣:

foreach (var row in query) { 
    Server s = row.s; 
    // Check the server... 
    CEServer c = row.c; 
    // Use CEServer... 
}