2011-11-24 37 views
1

我試圖構建一個簡單的Web服務,該服務從數據庫返回顯示列表。 Web服務具有下面的代碼來獲取其數據:在ASP.NET/C#/ Linq-to-SQL中構建Web服務

private BLLoptredens BLLoptredens = new BLLoptredens(); 

[WebMethod] 
public Array getVoorstellingenByArtiest(string p_artiest) 
{ 
    return BLLoptredens.selectByArtistName(p_artiest).ToArray() ; 
} 

的數據來自BLL,剛剛從DAL傳遞數據,像這樣:

public IList<Optreden> selectByArtistName(string p_artiest) 
{ 
    var query = (from o in dc.Optredens 
       where o.artiest.Contains(p_artiest) 
       select o); 
    return query.ToList(); 
} 

這崩潰,出現以下錯誤:

You must implement a default accessor on System.Array because it inherits from ICollection

可以幫助我在這個方式嗎?

非常感謝您的幫助!

+0

不要從webmethod返回數組。如果Optreden是可序列化的,您可以返回一個類似Optreden []的數組。 –

+0

我從我的DAL獲得一個iList 。我如何將它轉換爲Optreden []? – Jorre

+0

我認爲ToArray可以完成這項工作,而不是ToList –

回答

1

的有什麼特別需要歸還的接口,而不是一個完整的通用類的?

嘗試更改IList<Optreden>List<Optreden> - 應該這樣做。

+0

的工作!非常感謝。爲什麼我仍然應該在我的代碼中使用iList而不是List?否則List似乎是一個更靈活的解決方案? – Jorre

+0

List <>爲您提供完整的類,其中IList <>允許您返回基本不是List <>的東西,但實現了類似的行爲。既然你的方法中已經有了LIst <>,那麼僅僅返回一個接口沒有任何優勢。 –

0

嘗試公共列表,而不是公衆的IList

0
public Optreden[] getVoorstellingenByArtiest(string p_artiest) 
{ 
    return BLLoptredens.selectByArtistName(p_artiest).ToArray() ; 
} 

請注意Optreden []。我希望Optreden是一個帶有序列化成員的DataContract,用DataMember屬性來裝飾