Próbowałem dowiedzieć się, dlaczego zapytanie Linq, które zwraca listę stanów USA sformatowanych dla rozwijanej listy, nie będzie rzutowane na listę, gdy kod powróci do metody wywołującej. Błąd, który pojawia się:Nie można rzutować obiektu typu WhereSelectListIterator
Nie można rzutować obiektu typu 'WhereSelectListIterator'2 [StateListing.States, <> f__AnonymousTypea'2 [system.string, system.string]]' wpisz „System.Collections. Generic.List`1 [StateListing.States] '
Przestrzeń nazw StateListing od błędu jest biblioteką DLL, która ma klasę zwaną States zwracającą IEnumerable List stanów pokazanych poniżej.
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();
}
}
}
Pod moją kontrolą wykonuję połączenie z GetStates, które zwraca Listę stanów z powyższej biblioteki klas.
[HttpPost]
public JsonResult GetStateOptions()
{
try
{
//Return a list of options for dropdown list
var states = propertyRepository.GetStates();
return Json(new { Result = "OK", options = states });
}
W klasie repozytorium nieruchomość Mam dwie metody jedno, aby uzyskać StateList z biblioteki, a inny formatować listę państw na liście rozwijanej w moim zdaniem.
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
}
Błąd występuje, gdy kod osiągnie zwrot w metodzie GetStates.
Każda pomoc w tym problemie z castingiem, wyjaśniająca, co robię źle, byłaby doceniona.
Dziękuję Darin, że pracował. Chyba próbowałem uczynić go bardziej skomplikowanym, niż powinien. – Shawn