我正在运行以下查询: -
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 :(得分:3)
您可以将Convert.ToDouble
与对象一起使用,因此它应该适用于double和for string:
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
时才有效。