C# 名为'的局部变量;myList';无法在此作用域中声明

C# 名为'的局部变量;myList';无法在此作用域中声明,c#,asp.net-mvc,sorting,C#,Asp.net Mvc,Sorting,有谁能解释给我,让我知道这个错误是什么,为什么我会得到它? 我试图更改变量的名称f,但没有成功 public ActionResult Index(string SortOrder, string CurrentFilter, string SearchString, int? page) { ViewBag.CurrentSort = SortOrder; ViewBag.NameSortParm = string.IsNullOrEmpty(SortOrder) ? "Ti

有谁能解释给我,让我知道这个错误是什么,为什么我会得到它? 我试图更改变量的名称
f
,但没有成功

public ActionResult Index(string SortOrder, string CurrentFilter, string SearchString, int? page)
{

    ViewBag.CurrentSort = SortOrder;
    ViewBag.NameSortParm = string.IsNullOrEmpty(SortOrder) ? "Tillverkning desc" : "";
    ViewBag.DateSortParm = SortOrder == "HireDate" ? "HireDatedesc" : "HireDate";

    conn.Open();

    ProductionOrderList myList = new  ProductionOrderList();
    myList = ProductionOrderReg.GetProductionOrders(conn, new Guid("288937bcc-6uif-485a-anm9-fadfq1234039d"));

    if (!string.IsNullOrEmpty(SearchString))
    {     
        // here on myList get red line     
        myList = myList.Where( myList => myList .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
    }
}
这是因为C#支持。编译器正在抱怨,因为lambda参数
myList
必须与外部范围中的任何变量具有不同的名称

试试这个:

myList = myList.Where(x => x.ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
 IEnumerable<tionOrderItem> myList = ProductionOrderReg.GetProductionOrders(...);
 if (!string.IsNullOrEmpty(SearchString))
 {     
      // here on myList get red line     
      myList = myList.Where(x => x .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
 }

 ...


下一个问题是
myList
属于
ProductionOrderList
类型,而
Where
重新运行
IEnumerable
。除非您需要使用自定义集合类型,否则我不会使用它。试试这个:

 IEnumerable<tionOrderItem> myList = ProductionOrderReg.GetProductionOrders(...);
 if (!string.IsNullOrEmpty(SearchString))
 {     
      // here on myList get red line     
      myList = myList.Where(x => x .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
 }

 ...
这是因为C#支持。编译器正在抱怨,因为lambda参数
myList
必须与外部范围中的任何变量具有不同的名称

试试这个:

myList = myList.Where(x => x.ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
 IEnumerable<tionOrderItem> myList = ProductionOrderReg.GetProductionOrders(...);
 if (!string.IsNullOrEmpty(SearchString))
 {     
      // here on myList get red line     
      myList = myList.Where(x => x .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
 }

 ...


下一个问题是
myList
属于
ProductionOrderList
类型,而
Where
重新运行
IEnumerable
。除非您需要使用自定义集合类型,否则我不会使用它。试试这个:

 IEnumerable<tionOrderItem> myList = ProductionOrderReg.GetProductionOrders(...);
 if (!string.IsNullOrEmpty(SearchString))
 {     
      // here on myList get red line     
      myList = myList.Where(x => x .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
 }

 ...
将代码更改为

myList = myList.Where( item => item .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));
将代码更改为

myList = myList.Where( item => item .ProductionOrderNo.ToUpper().Contains(SearchString.ToUpper()));

错误14无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“SystemCompany.Database.Production.ProductionOrderList”。存在显式转换(是否缺少强制转换?)my productionOrderItem是ProductionOrderListError 14中的一项,无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“SystemCompany.Database.Production.ProductionOrderList”。存在显式转换(是否缺少强制转换?)my productionOrderItem是ProductionOrderListError 14中的一项,无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“SystemCompany.Database.Production.ProductionOrderList”。存在显式转换(是否缺少转换?)my productionOrderItem是中的一项ProductionOrderList@FadiAlkadi我已经添加了有关该错误的更多信息。请参阅我的更新错误。错误14无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“SystemCompany.Database.Production.ProductionOrderList”。存在显式转换(是否缺少转换?)my productionOrderItem是中的一项ProductionOrderList@FadiAlkadi我已经添加了有关该错误的更多信息。查看我的更新错误。