Linq查询 - 列上的不同数据类型

时间:2013-02-04 14:56:55

标签: c# linq dataset

我正在运行以下查询: -

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中修改源数据。

1 个答案:

答案 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时才有效。