foreach语句不能对类型变量进行操作,因为它不包含' GetEnumerator'的公共定义。

时间:2015-05-20 12:28:48

标签: c#

我无法理解为什么会出现这种错误:

public string GetStatusText(string abc) {
   string status = "";

   STATUSDTO StatusList = new STATUSDTO();
   StatusList.LoadByMasterWayBill(abc);

   // this method return List<STATUSDTO>    

   bool has190s = false;
   bool hasother = false;

   foreach(V_TMSDetail_STATUSDTO v in StatusList) {
       if (v.Status == "190" || v.Status == "191") has190s = true;
       else hasother = true;
   }

   if (has190s && hasother) status = "Partially Submitted";
   else if (has190s && !hasother) status = "Submitted";
   else if (!has190s && hasother) status = "Not Submitted";

   return status;
}

当我编译这个程序时,它给了我这个错误:

  

foreach语句不能对类型变量进行操作,因为它不包含&#39; GetEnumerator&#39;的公共定义。

请帮我解决。

2 个答案:

答案 0 :(得分:0)

基于悬挂评论的猜测... StatusList没有实现枚举器。我猜你试图遍历LoadByMasterWayBill

返回的列表
var myList = StatusList.LoadByMasterWayBill(abc);

foreach(V_TMSDetail_STATUSDTO v in myList) {
   //code above
}

答案 1 :(得分:0)

C#中的foreach语句仅适用于实现System.Collections.IEnumerableSystem.Collections.Generic.IEnumerable<T>的集合。您收到的错误告诉您,您拥有的集合不包含由这些接口提供的公共GetEnumerator方法的定义。

有关详细信息,请参阅https://msdn.microsoft.com/nl-nl/library/ttw7t8t6.aspx