文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

LINQ操作DataTable出现指定的转换无效问题怎么解决

2023-06-17 14:52

关注

这篇文章主要讲解了“LINQ操作DataTable出现指定的转换无效问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LINQ操作DataTable出现指定的转换无效问题怎么解决”吧!

代码

public static IEnumerable getEnumerable()    {    DataTable dt = getDatatable();    try   {     var query = from q in dt.AsEnumerable()     where q.Field<string>("IPLocation") == "纯真网络 2008年6月20日IP数据"    select new    {     IPid = q.Field<int>("IPid"),     IPFrom = q.Field<string>("IPFrom"),     IPTo = q.Field<string>("IPTo"),     IPCity = q.Field<string>("IPCity"),     IPToNumber = q.Field<string>("IPToNumber"),     IPFromNumber = q.Field<string>("IPFromNumber")     };     return query;     }     catch    {   return null;    }   }

然后我在***做数据源绑定的时候,总是报System.InvalidCastException: 指定的转换无效的错误,无论用Gridview的自动生成列,还是Reapter的手动添加列,都有问题,***我查出生成的结果集就含有异常的存在,也就说再取结果集的时候,要慎重用如下写法:

IPid = q.Field<int>("IPid"),  IPFrom = q.Field<string>("IPFrom"),  IPTo = q.Field<string>("IPTo"),  IPCity = q.Field<string>("IPCity"),  IPToNumber = q.Field<string>("IPToNumber"),  IPFromNumber = q.Field<string>("IPFromNumber")

我后来尝试了另一种写法:

IPid = q["IPid"].ToString(),  IPFrom = q["IPFrom"].ToString(),  IPTo = q["IPTo"].ToString(),  IPLocation = q["IPLocation"].ToString(),  IPCity = q["IPCity"].ToString(),  IPToNumber = q["IPToNumber"].ToString(),  IPFromNumber = q["IPFromNumber"].ToString()

一开始我调试也还是报System.InvalidCastException: 指定的转换无效这个错误,我调试了一段时间,也还是有问题,我在想是不是数据绑定控件的问题,后来我将原来的Gridview自动生成列换成了手动输入列:

代码

<table  align="center" width="100%" cellpadding="0" cellspacing="0" style="border: Gray 1px solid; margin-top:5px; margin-bottom:10px">    <asp:Repeater ID="rpTest" runat="server">    <HeaderTemplate> <tr>    <th style=" background-color:Gray; color:White;border: Gray 1px solid;text-align:center">ID</th>    <th style=" background-color:Black; color:White;border: Gray 1px solid;text-align:center">IPFrom</th>    <th style=" background-color:Black; color:White;border: Gray 1px solid;text-align:center">IPTo</th>    <th style=" background-color:Black; color:White;border: Gray 1px solid;text-align:center">IPLocation</th>    <th style=" background-color:Black; color:White;border: Gray 1px solid;text-align:center">City</th>    <th style=" background-color:Black; color:White;border: Gray 1px solid;text-align:center">IPToNumber</th>    <th style=" background-color:Black; color:White;border: Gray 1px solid;text-align:center">IPFromNumber</th> </tr>    </HeaderTemplate>  <ItemTemplate> <tr>  <td style="border: Gray 1px solid;text-align:center;"><%#Eval("IPid")%></td>  <td style="border: Gray 1px solid;text-align:center;"><%#Eval("IPFrom")%></td>    <td style="border: Gray 1px solid;text-align:center;"><%#Eval("IPTo")%></td>    <td style="border: Gray 1px solid;text-align:center;"><%#Eval("IPLocation")%></td>  <td style="border: Gray 1px solid;text-align:center;"> <%#Eval("IPCity") %>  </td>     <td style="border: Gray 1px solid;text-align:center;"><%#Eval("IPToNumber")%></td>     <td style="border: Gray 1px solid;text-align:center;"><%#Eval("IPFromNumber")%></td>    </tr>  </ItemTemplate>    </asp:Repeater>  </table>

后来问题就解决了,我现在也不知道这个问题什么原因,为什么不支持自动产生列呢(等待高手帮忙解决)?

知道问题的所在了,然后就可以随心的处理DataTable里面的数据了,如下面一个简单的小例子:

代码

public static IEnumerable getEnumerable()     {    DataTable dt = getDatatable();    try   {   var query = from q in dt.AsEnumerable()     orderby long.Parse(q["IPid"].ToString()) descending     where q["IPid"].ToString() == "345058"    select new    {    IPid = q["IPid"].ToString(),    IPFrom = q["IPFrom"].ToString(),    IPTo = q["IPTo"].ToString(),    IPLocation = q["IPLocation"].ToString(),    IPCity = q["IPCity"].ToString(),    IPToNumber = q["IPToNumber"].ToString(),    IPFromNumber = q["IPFromNumber"].ToString()     };   return query;   //List<IPInfo> list = new List<IPInfo>();   //foreach (var q in query)   //{   //IPInfo model = new IPInfo();   //model.IPCity = q.IPCity;   //model.IPFrom = q.IPFrom;   //model.IPFromNumber = q.IPFromNumber;   //model.IPid = long.Parse(q.IPid);   //model.IPLocation = q.IPLocation;   //model.IPTo = q.IPTo;   //model.IPToNumber = q.IPToNumber;   //list.Add(model);   //}   //return list;    }    catch   {   return null;    }     }

感谢各位的阅读,以上就是“LINQ操作DataTable出现指定的转换无效问题怎么解决”的内容了,经过本文的学习后,相信大家对LINQ操作DataTable出现指定的转换无效问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯