私は、コードが呼び出し元のメソッドに戻るときに、ドロップダウンリスト用にフォーマットされた米国の州のリストを返すLinqクエリがリストにキャストされない理由を理解しようとしています。私が手にエラーがある:型 'WhereSelectListIterator'2 [StateListing.States、<> f__AnonymousTypea'2 [可能System.String、可能System.String]]'「にSystem.Collectionsを入力するためのオブジェクトをキャストすることができませんWhereSelectListIterator型のオブジェクトをキャストできません
。
エラーからの名前空間StateListingは、以下に示す状態のIEnumerableリストを返すStatesというクラスを持つdllライブラリです。
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を呼び出します。私は図書館からStateListを取得するには二つの方法1を持っている、と私の見解では、ドロップダウンリストのための状態のリストをフォーマットするには、別のプロパティリポジトリクラスで
[HttpPost]
public JsonResult GetStateOptions()
{
try
{
//Return a list of options for dropdown list
var states = propertyRepository.GetStates();
return Json(new { Result = "OK", options = states });
}
。
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メソッド内のリターンに達したときに発生します。
私が間違っていることを説明するこのキャスティングの問題についての助けがあれば幸いです。
ダーリンに感謝します。私はそれが必要以上に複雑にしようとしていたと思います。 – Shawn