日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
LINQ操作DataTable出現(xiàn)指定的轉(zhuǎn)換無效問題的解決

開發(fā)頻道向您推薦《LINQ教程-LINQ to SQL技術(shù)精解》,以便于您更好的理解這篇文章。

目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管維護、企業(yè)網(wǎng)站設(shè)計、曲麻萊網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

下面進入正題,說說我在開發(fā)過程遇到的問題 “LINQ操作DataTable的問題 ”。

在平時的工作中,可能有很多情況下要對DataTable的里面的數(shù)據(jù)進行處理,最簡單的例子如:對DataTable中的某個字段進行排序,根據(jù)條件篩選DataTable中的數(shù)據(jù)。。。,例子很多,下面我們看看如何處理的:

這是我最初寫的代碼:

代碼

 
 
 
  1. public static IEnumerable getEnumerable() 
  2.  {
  3.   DataTable dt = getDatatable();
  4.   try
  5.   {
  6.    var query = from q in dt.AsEnumerable()
  7.    where q.Field("IPLocation") == "純真網(wǎng)絡(luò) 2008年6月20日IP數(shù)據(jù)"
  8.    select new
  9.    {
  10.    IPid = q.Field("IPid"),
  11.    IPFrom = q.Field("IPFrom"),
  12.    IPTo = q.Field("IPTo"),
  13.    IPCity = q.Field("IPCity"),
  14.    IPToNumber = q.Field("IPToNumber"),
  15.    IPFromNumber = q.Field("IPFromNumber")
  16.    };
  17.    return query;
  18.    }
  19.    catch
  20.    {
  21.  return null;
  22.   }
  23.  }

然后我在***做數(shù)據(jù)源綁定的時候,總是報System.InvalidCastException: 指定的轉(zhuǎn)換無效的錯誤,無論用Gridview的自動生成列,還是Reapter的手動添加列,都有問題,***我查出生成的結(jié)果集就含有異常的存在,也就說再取結(jié)果集的時候,要慎重用如下寫法:

 
 
 
  1. IPid = q.Field("IPid"),
  2. IPFrom = q.Field("IPFrom"),
  3. IPTo = q.Field("IPTo"),
  4. IPCity = q.Field("IPCity"),
  5. IPToNumber = q.Field("IPToNumber"),
  6. IPFromNumber = q.Field("IPFromNumber")

 我后來嘗試了另一種寫法:

 
 
 
  1. IPid = q["IPid"].ToString(),
  2. IPFrom = q["IPFrom"].ToString(),
  3. IPTo = q["IPTo"].ToString(),
  4. IPLocation = q["IPLocation"].ToString(),
  5. IPCity = q["IPCity"].ToString(),
  6. IPToNumber = q["IPToNumber"].ToString(),
  7. IPFromNumber = q["IPFromNumber"].ToString()

一開始我調(diào)試也還是報System.InvalidCastException: 指定的轉(zhuǎn)換無效這個錯誤,我調(diào)試了一段時間,也還是有問題,我在想是不是數(shù)據(jù)綁定控件的問題,后來我將原來的Gridview自動生成列換成了手動輸入列:

代碼

 
 
 
  1.    
  2.    
  3.    ID
  4.    IPFrom
  5.    IPTo
  6.    IPLocation
  7.    City
  8.    IPToNumber
  9.    IPFromNumber
  10.    
  11.  
  12.  <%#Eval("IPid")%>
  13.  <%#Eval("IPFrom")%> 
  14.  <%#Eval("IPTo")%> 
  15.  <%#Eval("IPLocation")%>
  16.  
  17. <%#Eval("IPCity") %>
  18.    
  19.  <%#Eval("IPToNumber")%>  
  20.  <%#Eval("IPFromNumber")%>
  21.    
  22.  
  23.    
  24.  

后來問題就解決了,我現(xiàn)在也不知道這個問題什么原因,為什么不支持自動產(chǎn)生列呢(等待高手幫忙解決)?

知道問題的所在了,然后就可以隨心的處理DataTable里面的數(shù)據(jù)了,如下面一個簡單的小例子:

代碼

 
 
 
  1. public static IEnumerable getEnumerable()
  2.    {
  3.   DataTable dt = getDatatable();
  4.   try
  5.   {
  6.  var query = from q in dt.AsEnumerable()
  7.    orderby long.Parse(q["IPid"].ToString()) descending
  8.    where q["IPid"].ToString() == "345058"
  9.    select new
  10.    {
  11.   IPid = q["IPid"].ToString(),
  12.   IPFrom = q["IPFrom"].ToString(),
  13.   IPTo = q["IPTo"].ToString(),
  14.   IPLocation = q["IPLocation"].ToString(),
  15.   IPCity = q["IPCity"].ToString(),
  16.   IPToNumber = q["IPToNumber"].ToString(),
  17.   IPFromNumber = q["IPFromNumber"].ToString()
  18.    };
  19.  return query;
  20.  //List list = new List();
  21.  //foreach (var q in query)
  22.  //{
  23.  //IPInfo model = new IPInfo();
  24.  //model.IPCity = q.IPCity;
  25.  //model.IPFrom = q.IPFrom;
  26.  //model.IPFromNumber = q.IPFromNumber;
  27.  //model.IPid = long.Parse(q.IPid);
  28.  //model.IPLocation = q.IPLocation;
  29.  //model.IPTo = q.IPTo;
  30.  //model.IPToNumber = q.IPToNumber;
  31.  //list.Add(model);
  32.  //}
  33.  //return list;
  34.   }
  35.   catch
  36.   {
  37.  return null;
  38.   }
  39.    }

當然更復(fù)雜的對DataTable的操作這里就不在敖述了,在這里我只是說明一下困擾我的問題。

鏈接:http://www.cnblogs.com/yangtongnet/archive/2010/05/10/1731728.html


標題名稱:LINQ操作DataTable出現(xiàn)指定的轉(zhuǎn)換無效問題的解決
標題網(wǎng)址:http://www.dlmjj.cn/article/cdsjogi.html