C# 无法将字符串转换为int,必须很简单,但我找不到任何地方
这里,我只想检查列是否处于活动状态,然后进入if循环。但它给了我一个错误,无法将if中最后一个条件的字符串转换为int。你们知道我能做什么吗。谢谢C# 无法将字符串转换为int,必须很简单,但我找不到任何地方,c#,asp.net,C#,Asp.net,这里,我只想检查列是否处于活动状态,然后进入if循环。但它给了我一个错误,无法将if中最后一个条件的字符串转换为int。你们知道我能做什么吗。谢谢 if (ds != null && ds.Tables != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && ds.Tables[0].Columns[0].Col
if (ds != null && ds.Tables != null
&& ds.Tables.Count > 0
&& ds.Tables[0].Rows.Count > 0
&& ds.Tables[0].Columns[0].ColumnName["Status"] == "Y")
{
disableloc.DataSource = ds;
disableloc.DataBind();
}
else
{
ds = null;
disableloc.DataSource = ds;
disableloc.DataBind();
存储过程是SELECT ML.locationname,
rtrimML.address+如果ML.Address2不为空,则+rtrimML.Address2 ELSE END+-+ML.city+,+ML.state作为地址,
ML.locationid,
美赞臣,
当ML.active Y然后Deactive else active end[状态]时的情况,
选择计数作为返回
来自美国统计局
其中类型=商户
和locationID=ML.locationID
和状态=单击为stat,
作为按钮,作为空白,
dbo。GetCouponCountForLocations@_merchantid,ML.locationID耦合计数,
域名,
从提升中选择Count,其中LocationId=ML.LocationId和PostType=1作为作业
从商户位置ML,商户页面MP
其中MP.LocationID=ML.LocationID
和ML.merchantid=@_merchantidorder By'我假设ds.Tables[0].Columns[0].ColumnName[Active]返回int而不是字符串 编辑: 虽然我的答案在技术上是正确的,但返回的值是int,这不是期望的答案。我道歉。正如其他海报所提到的,您需要从行而不是列中获取值 查看ds.表[0]。列[0]。列名称[Active] 您正在尝试指定列两次,一次太多 换成 ds.表[0]。列[0]==Y 或ds.Tables[0]。列[Active]==Yds.Tables[0]。列[0]。列名称[此处应为INT]
这将在该列的索引中传递一个字符供参考。由于ColumnName返回字符串而导致编译错误,并且索引器字符串定义的唯一索引器是在指定位置返回字符的整数索引器 假设您正在尝试访问第一行的活动列的值: ds.表[0]。列[0]。列名称[Active]==Y 应该是
ds.Tables[0]。行[0][Active]==YColumnName实际返回数据列的名称,在您的示例中,ds.Tables[0]。列[0]。ColumnName返回第一列的名称。它是一个字符串,因此可以使用[]运算符获取字符串中的一个字符。 但是您必须传递一个int,而不是string Active,这样您就得到了错误。 我想您是想检查列值。在这种情况下,您必须使用
ds.Tables[0].Rows[0]["Active"]== "Y"
ColumnName不是列[0]的属性吗?问题中编辑了从中获取ds值的存储过程。“请过目一下,让我知道。”温斯顿·史密斯,说得很好。仔细阅读问题始终是最佳做法。@斯诺:索引器过载,它可以接受int、string或DataColumn,IIRC。所以它不应该,但可以:@leppie我不认为它对'ColumnName'属性有任何重载,只能传入索引!至少在我的编辑中是这样的shows@leppie:索引器错误,请参阅顶部答案。斯诺是对的,但并没有给出一个解决方案。哦,亲爱的我!我完全错过了!后退2步。我在考虑Columns的财产。。。现在是周末: