linq で列の値を計算しようとしています。合計は正しく行われますが、除算または乗算時に誤った値が生成されます。例を以下に示します。
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dtWidgets = Get_widgets();   
        DataTable dtHits = Get_hits();
        var hit_rate =
        from w in dtWidgets.AsEnumerable()
        join h in dtHits.AsEnumerable()
            on w[0] equals h[0]
        select new
        {
            Date = w.Field<DateTime>("calendar_date"),
            Widgets = w.Field<int>("widgets"),
            Hits = h.Field<int>("hits"),
            TestSum = w.Field<int>("widgets")+h.Field<int>("hits"),
            TestMult = w.Field<int>("widgets") * h.Field<int>("hits")
        };
        gvWidgets.DataSource = dtWidgets;
        gvWidgets.DataBind();
        gvHits.DataSource = dtHits;
        gvHits.DataBind();
        gvLinq.DataSource = hit_rate.ToArray();
        gvLinq.DataBind();
    }
    static DataTable Get_widgets()
    {
        DataTable widgets = new DataTable();
        widgets.Columns.Add("calendar_date", typeof(DateTime));
        widgets.Columns.Add("widgets", typeof(int));
        widgets.Rows.Add("05/15/2012", 200000);
        widgets.Rows.Add("05/16/2012", 210000);
        return widgets;
    }
    static DataTable Get_hits()
    {
        DataTable hits = new DataTable();
        hits.Columns.Add("calendar_date", typeof(DateTime));
        hits.Columns.Add("hits", typeof(int));
        hits.Rows.Add("05/15/2012", 100000000);
        hits.Rows.Add("05/16/2012", 120000000);
        return hits;
    }
}
戻り値:
ウィジェットが TestSum にヒットした日付 TestMult
2012 年 5 月 15 日 12:00:00 午前 200000 100000000 100200000 -1662697472
2012 年 5 月 16 日 12:00:00 午前 210000 120000000 120210000 1426874368