2012-06-06 34 views
0

鑄造變種型對象一類的數組。從變種類型強制轉換爲不同類

在我的例子,我可以從表中查詢所有元素。但問題是,當我投它,它只是沒有投所有實例。 任何幫助?

回答

1

有沒有這樣的類型爲「VAR型」。使用var的聲明只是使編譯器推斷出變量的類型。它仍然是靜態類型,和工作方式,如果你明確聲明它 - 雖然它允許你聲明其使用匿名類型變量。

在你的情況,我們不知道任何涉及的方法做的,這意味着我們真的不能告訴是怎麼回事。聽起來像Query可能是IEnumerable<AccessPointItem>類型。您需要用代碼表示如何將AccessPointItem轉換爲AccessPoint

有幾點要注意:

  • 查詢表達式是有點毫無意義的 - 你可能只是想打電話給tsvc.CreateQuery<AccessPointItem>()
  • 以來,在C#中使用駱駝外殼局部變量(用小寫字母開始)不帕斯卡爾情況
  • 您創建無目的的陣列 - 爲什麼?
  • Select()不會返回NULL,所以你並不需要檢查它
  • 調用Cast將嘗試只投各0​​到AccessPoint ......真的是你打算怎麼辦?
+0

我究竟需要的是AccessPointItem轉換成存取點(存取點的陣列在這種情況下的對象) – JOY

+0

@JOY:嗯,我們什麼都不知道關於'AccessPoint'和'AccessPointItem'類......是他們的標準類,還是他們自己的? –

+0

他們是我自己的班級。這兩個類具有幾乎相同的屬性。我需要在我的控制器中使用AccessPoint類。以便在從表中獲取值(如AccessPointItem)後。我需要將它們轉換爲不同的類對象(AccessPoint) – JOY

0

看起來好像你在混淆你的類AccessPointAccessPointItem。試試這個:

public static AccessPoint[] getAllAps() 
{ 
    return tsvc.CreateQuery<AccessPoint>("AccessPointTable").ToArray(); 
} 

或本:

public static AccessPointItem[] getAllAps() 
{ 
    return tsvc.CreateQuery<AccessPointItem>("AccessPointTable").ToArray(); 
} 
+0

在表中有類型的AccessPointItem項。並需要轉換它們並返回爲AccessPoint對象。 – JOY

+0

向我們展示'AccessPoint'和'AccessPointItem'的聲明。 –

0

也有一些是錯誤的與所涉及的類型。

首先你讀AccessPointItem

var Query = from APs in tsvc.CreateQuery<AccessPointItem>(...) 

然後嘗試將它轉換爲AccessPoint

return Query.Cast<AccessPoint>() 

你會需要實現某種形式的轉換方法,以便爲工作(不幸的是,我自己從來沒有這樣做過,但是從Google的快速運行中我可以看到關於該主題的大量信息)。我給它一個鏡頭從我的頭頂:

//inside AccessPointItem.cs 
public static AccessPoint ToAccessPoint(this AccessPointItem item) // extension method looks good for the job 
{ 
    AccessPoint retObj = new AccessPoint(); 
    // assign properties from 'item' to 'retObj' 
    return retObj; 
} 

//Usage example in your case 
return Query.Select(singleAccessPointItem => singleAccessPointItem.ToAccessPoint()); 
+0

是這正是我所需要做的。和谷歌似乎不提供任何幫助:( – JOY

+0

@JOY我試圖把一些代碼,這只是一個概念的證明,但可能有幫助 – Alex

相關問題