2013-02-04 24 views
1

不同的數據類型我運行下面的查詢: -Linq查詢 - 上

var Values = from data in DtSet.Tables["tblCosts"].AsEnumerable() 
      group data by new 
      { 
       InvNo = data.Field<double>("InvoiceNo"), 
       AccRef = data.Field<double>("SiteRefNum"), 
      } 
      into g 
      select new 
      { 
       Code = "1", 
       InvType = "I", 
       Account = g.Key.AccRef, 
       InvNo = g.Key.InvNo, 
       ChargeTotal = g.Sum(d => d.field<double>("Charge") 
      }; 

由於數據導入數據表(從Excel)的方式有時AccRef的數據類型爲double,有時它是string。有沒有辦法在運行時克服這一點,因爲我希望在導入之前不要讓用戶在Excel中修改源數據。

+0

如何在一列中放入數據庫「double」和「string」數據類型? –

+0

我認爲它總是字符串,不是嗎?你如何創建這個數據表? –

+0

你可以改變'AccRef'賦值爲'AccRef = data.Field (「SiteRefNum」)'? –

回答

2

您可以使用Convert.ToDouble使用對象,所以它應該雙和字符串工作:

var Values = from data in DtSet.Tables["tblCosts"].AsEnumerable() 
      group data by new 
      { 
       InvNo = data.Field<double>("InvoiceNo"), 
       AccRef = Convert.ToDouble(data["SiteRefNum"]), 
      } 
      into g 
      select new 
      { 
       Code = "1", 
       InvType = "I", 
       Account = g.Key.AccRef, 
       InvNo = g.Key.InvNo, 
       ChargeTotal = g.Sum(d => d.Field<double>("Charge")) 
      }; 

當然只有SiteRefNum實際上是可轉化爲double該作品。