C# MVC-无法从';int';至';system.web.ui.WebControl.listitem

C# MVC-无法从';int';至';system.web.ui.WebControl.listitem,c#,asp.net,linq,model-view-controller,drop-down-menu,C#,Asp.net,Linq,Model View Controller,Drop Down Menu,您好,我正在尝试对从多选下拉框中选择客户ID的客户进行归档;我的控制器出现上述错误 public ActionResult Create(CountryViewModel country) { List<SelectListItem> selectedItems = country.MenuCountry.Where(p => country.ContryIds.Contains(int.Parse(p.Value))).ToList();

您好,我正在尝试对从多选下拉框中选择客户ID的客户进行归档;我的控制器出现上述错误

public ActionResult Create(CountryViewModel country)
    {
        List<SelectListItem> selectedItems = country.MenuCountry.Where(p => country.ContryIds.Contains(int.Parse(p.Value))).ToList();         
        try
        {
            CustomerClient CC = new CustomerClient();
            var result = CC.findAll();

            var matches = from customer in result
                          where selectedItems.Contains(customer.Id) // Here is error and saying cannot convert from 'int' to 'system.web.ui.webcontrols.listitem
                          select customer;
           // ViewBag.listCustomers = CC.findAll();

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }
请告知;非常感谢

请试试这个

 var matches = from customer in result
               where selecteList.Exists(a=>a.Value==  customer.Id.ToString())                          select customer;

假设您的CountryViewModel如下所示

public class CountryViewModel 
{
  public List<SelectListItem> MenuCountry{ get; set; } 
  public string[] ContryIds { get; set; } 
}
由于
Country
属性是
string
类型,我们需要确保下拉列表的选项值也是string(国家(名称)?)。因此,可能在使用下拉菜单渲染视图的GET操作中

var countryOptions = new List<SelectListItem> {
  new SelectListItem { Value="USA", Text="USA"},
  new SelectListItem { Value="Canada", Text="Cananda" }
};
// to do : pass countryOptions  to the view to render the dropdown
var countryOptions=新列表{
新建SelectListItem{Value=“USA”,Text=“USA”},
新建SelectListItem{Value=“Canada”,Text=“Cananda”}
};
//要执行的操作:将countryOptions传递到视图以呈现下拉列表

selectedItems
的类型必须是
List
(或
int[]
,等等))selectedItems.Any(s=>s.value==ccustomer.Id.ToString())@MarkC。在asp.net mvc中,我们有一个类SelectListItem。我认为用户正在使用它创建下拉列表。它有一个文本和值属性,都是stringHi My countryViewMovel类型,类似下面的公共类CountryViewModel{public List menucontry{get;set;}public int[]ContryIds{get;set;}}@user3624511请尝试我的答案,告诉我这是否是您想要的;以前解决了,但又坏了;列表selectedItems=country.MenuCountry.Where(p=>country.ContryId.Contains(int.Parse(p.Value)))中出现错误。ToList();------声明值不能为空。参数名称:source似乎country.MenuCountry有一个空值。我不能告诉你更多,因为我没有数据,它与你对值进行配对时有关。试试这个:-List selectedItems=country.menucontry.Where(p=>!string.IsNullOrEmpty(p.value)和&country.ContryIds.Contains(int.Parse(p.value))。ToList()@user3624511,我想我解决了你原来的问题。因此,如果你有其他错误,最好问一个新问题。如果解决了您在问题中提到的问题,请标记此项。@user3624511如果Yashvier希望继续帮助您-这取决于他们。但是,如果他们不愿意,请停止要求进一步讨论的延长讨论。非常感谢。
 public ActionResult Create(CountryViewModel country)
 {
    var CC = new CustomerClient();
    var result = CC.findAll(); // assuming this return a collection of Customer
    var matches = result.Where(x=>country.CountryIds.Contains(x.Country);
    // to do : return something
 } 
var countryOptions = new List<SelectListItem> {
  new SelectListItem { Value="USA", Text="USA"},
  new SelectListItem { Value="Canada", Text="Cananda" }
};
// to do : pass countryOptions  to the view to render the dropdown