我一直在试图弄清楚为什么返回代码为调用方法时,返回格式化为下拉列表的美国州列表的Linq查询不会转换为列表。我得到的错误是: 无法转换类型为'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,另一种是在 View 中格式化下拉列表的状态列表。 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方法中的返回值时,将发生错误。对此类型转换问题的任何帮助,可以解释我在做什么错,将不胜感激。 最佳答案 您将LINQ查询投影到一个匿名对象,而不投影到显然无法工作的State列表。这两种类型不兼容。因此,首先修改存储库层并摆脱GetStateList方法:public class PropertyRepository: IPropertyRepository{ public List<States> GetStates() { return States.GetStates().ToList(); }}然后在 Controller 中投影到所需的结构:[HttpPost]public JsonResult GetStateOptions(){ var states = propertyRepository.GetStateList(); var options = states.Select(x => new { DisplayText = c.StateName, Value = c.StateID.ToString() }).ToList(); return Json(new { Result = "OK", options = states });}关于asp.net-mvc-3 - 无法转换类型WhereSelectListIterator的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15184153/
10-12 00:24