我正在從web服務中取回有關位置的信息。該服務返回一個包含所有對象的WebObjectsDTOs
數組。對象可以是不同的類型,但在這種情況下,我只請求MlaLocation
類型的對象。然後我需要按地點名稱排序。我遇到的問題是我無法在searchResult.WebObjectDTOs
上執行orderby,因爲它是基礎對象,無法訪問位置名稱。將對象陣列轉換爲不同的對象陣列
我以爲我的解決方案是將searchResult.WebObjectDTOs
轉換爲MlaLocationDTO[]
,因爲searchResult
只返回一個MlaLocationDTO
的數組。但是我在調試中看到被設置爲空,即使searchResult.WebObjectDTOs
有對象。
MlaWebObjectServiceClient svc = new MlaWebObjectServiceClient();
SearchRequest searchRequest = new SearchRequest(){
OperatingCompanyId = Guid.Parse("e4be5383-03d0-4a99-9613-6238dd2396ad"),
WebObjectType = "MlaLocation"
};
SearchResult searchResult = svc.GetMlaWebObjects(searchRequest);
MlaLocationDTO[] mlaLocations = searchResult.WebObjectDTOs as MlaLocationDTO[];
rptLocationsList.DataSource = mlaLocations.OrderBy(m => m.Name);
rptLocationsList.DataBind();
C#中的數組轉換很奇怪,並且據我所知,您必須遍歷數組中的每個項並將它們直接轉換爲新數組。 –
@ RichardJ.RossIII你不需要迭代。請參閱我答案中的鏈接。例如,'object [] a = new string [] {「a」,「b」,「c」}'是合法的。 – phoog
@phoog正確的向下投射是好的,但向上投射是不同的,因爲它不會隱含地工作。 –