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

本文关键字:包含 GetEnumerator 定义 操作 不能 语句 类型 变量 因为 foreach | 更新日期: 2023-09-27 17:50:07

我不明白为什么会出现这个错误:

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语句不能操作类型的变量,因为它不包含"GetEnumerator"的公共定义

请帮我修一下

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

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

参见https://msdn.microsoft.com/nl-nl/library/ttw7t8t6.aspx获取更多信息。

这是基于悬挂评论的猜测…StatusList没有实现枚举数。我猜你正试图循环LoadByMasterWayBill

返回的列表
var myList = StatusList.LoadByMasterWayBill(abc);
foreach(V_TMSDetail_STATUSDTO v in myList) {
   //code above
}