我一直在試圖找出爲什麼返回美國國家列表的格式爲下拉列表的Linq查詢在代碼返回到調用方法時不會轉換爲列表。我得到的錯誤是:無法投射WhereSelectListIterator類型的對象
無法轉換類型的對象 'WhereSelectListIterator'2 [StateListing.States,<> f__AnonymousTypea'2 [System.String,System.String]]' 爲類型「System.Collections中。 Generic.List`1 [StateListing.States]'
該錯誤的命名空間StateListing是一個dll庫,它有一個名爲States的類,返回一個如下所示的IEnumerable狀態列表。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StateListing
{
public class States
{
public string StateAbbriviation { get; set; }
public int StateID { get; set; }
public string StateName { get; set; }
static int cnt = 0;
public static IEnumerable<States> GetStates()
{
return new List<States>
{
new States
{
StateAbbriviation = "AL",
StateID=cnt++,
StateName = "Alabama"
},
new States
{
StateAbbriviation = "AL",
StateID=cnt++,
StateName = "Alaska"
}
//Continued on with the rest of states
}.AsQueryable();
}
}
}
在我的控制中,我調用GetStates從上面的類庫中返回一個狀態列表。
[HttpPost]
public JsonResult GetStateOptions()
{
try
{
//Return a list of options for dropdown list
var states = propertyRepository.GetStates();
return Json(new { Result = "OK", options = states });
}
在屬性庫類,我有兩個方法,一個從圖書館獲得StateList,另有格式化狀態的上市在我看來,一個下拉列表。
public List<States> GetStateList()
{
var items = (from s in States.GetStates()
select s).ToList();
return items;
}
List<States> IPropertyRepository.GetStates()
{
try
{
List<States> RawStates = GetStateList();
var stateList = RawStates.Select(c => new { DisplayText = c.StateName, Value = c.StateID.ToString() });
return (List<States>)stateList; //<=== Error
}
當代碼在GetStates方法內到達返回值時發生該錯誤。
任何幫助這個鑄造問題解釋我做錯了將不勝感激。
感謝Darin的工作。我想我試圖讓它比需要的更復雜。 – Shawn 2013-03-04 05:59:41