foreach语句不能对'object'类型的变量进行操作
这个问题在这里已经有了答案:
如果你不知道对象的确切类型,但是你确定无论它是什么,它都会有GetEnumerator
(比如说,因为它是一个集合或者你自己的一个实现了IEnumerable
的对象),你可以停止编译器通过转换为dynamic
来发布错误,如下所示:
foreach (var item in (dynamic)(ddlOther.DataSource)) {
...
}
这里的交易是,如果事实证明ddlOther.DataSource
没有GetEnumerator
,你将在运行时得到一个错误,而不是编译时错误。
修改您的代码以检查IEnumerable接口。 它有更多的感受,更正你想要的。
public void DataSource(object source, object select, string Value = "UId", string Text = "Text")
{
ddlThis.DataSource = source;
ddlThis.DataTextField = Text;
ddlThis.DataValueField = Value;
ddlThis.DataBind();
ddlThisHidden.DataSource = source;
ddlThisHidden.DataTextField = Text;
ddlThisHidden.DataValueField = Value;
ddlThisHidden.DataBind();
if (select != null)
{
ddlOther.DataSource = select;
ddlOther.DataTextField = Text;
ddlOther.DataValueField = Value;
ddlOther.DataBind();
if (select is IEnumerable) //check if the object is a list of objects
foreach (var item in (IEnumerable)ddlOther.DataSource)
ddlThis.Items.Remove(item);
else //try to remove the single object
ddlThis.Items.Remove(select)
}
}
链接地址: http://www.djcxy.com/p/53763.html
上一篇: foreach statement cannot operate on variables of type 'object'