C#用LINQ操作Datatable数据库

现在有一个四列的Datatable第一列为5或6个数字,要将除去最后两个数字之外相等的行&&第三列相同的行的第二列计算平均值,第四列加起来之后生成一个新的行,把这些新的行... 现在有一个四列的Datatable 第一列为5或6个数字,要将除去最后两个数字之外相等的行&&第三列相同的行的第二列计算平均值,第四列加起来之后生成一个新的行,把这些新的行存入一个新的Datatable,用LINQ怎么写啊!!比如下面是部分截图,要求新的Datatable是这样:930 16.59 B 2080+400+..+2900930 16.58 S 1000931 16.59 B 600+400+..+1000931 16.56 S 1500 展开
 我来答
lyx060204
推荐于2018-04-21 · TA获得超过136个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:119万
展开全部
假设你上图表格数据为 DataTable dt,列分别为AA,BB,CC,DD

var query = from p in dt.AsEnumerable()
//分组
group p by new
{
t1 = p.Field<int>("AA").ToString().Substring(0, p.Field<int>("AA").ToString().Length - 2),
t2 = p.Field<double>("BB"),
t3 = p.Field<string>("CC")
} into g
select new
{
ColA = g.Key.t1,
ColB = g.Key.t2,
ColC = g.Key.t3,
ColD = g.Sum(c => c.Field<int>("DD"))
};

//转datatable
DataTable dtNew = dt.Clone();
DataRow drNew;
foreach (var p in query)
{
drNew = dtNew.NewRow();
drNew["AA"] = p.ColA;
drNew["BB"] = p.ColB;
drNew["CC"] = p.ColC;
drNew["DD"] = p.ColD;

dtNew.Rows.Add(drNew);
}

dtNew 为最终结果

注:转换过程中要考虑空值的情况
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式