C#linq的group、count、sum,记一下

C#linq的group、count、sum,记一下。

//使用linq在内存中分组
                var qry = from t in dtMain.AsEnumerable()
                          group t by new { sName = t.Field<string>("sName"), sID = t.Field<string>("sID") } into grp
                          select new
                          {
                              sID = grp.Key.sID,
                              sName = grp.Key.sName,
                              nRows = grp.Count(p => p.Field<string>("sID") == grp.Key.sID)
                          };
                if (qry.ToList().Count > 0)
                    qry.ToList().ForEach(p =>
                    {   //追加写入行
                        iData.initializeRecord(db = dtGroup.NewRow());
                        dtGroup.Rows.Add(db);
                        db["sID"] = p.sID;
                        db["sName"] = p.sName;
                        db["nRows"] = p.nRows;
                    });

再加上一个取出来之后排序:

StringBuilder builder = new StringBuilder();
            //查出来
            var qry = from t in dbMain.AsEnumerable()
                      where (t.Field<string>("部门标记") == "" && !string.IsNullOrEmpty(t.Field<string>("ksmc")))
                      group t by new { ksmc = t.Field<string>("ksmc") } into grp
                      //orderby grp.Key.ksmc  //排序
                      select new
                      {   //值、重复次数
                          ksmc = grp.Key.ksmc,
                          nTotal = grp.Count(p => p.Field<string>("ksmc") == grp.Key.ksmc)
                      } into tmp
                      orderby tmp.nTotal    //按照数量排序
                      select tmp;
            //拼接起来
            qry.ToList().ForEach(p =>
            {   //拼接起来
                builder.AppendLine(p.ksmc + ",重复" + p.nTotal + "次;");
            });

 

var x = rows.AsEnumerable().GroupBy(p => p.Field<string>("sTuan"));
                sTuanWhere = "";
                foreach (IGrouping<string, DataRow> itm in x.ToList())
                {
                    //foreach (var dr in itm) if (string.IsNullOrEmpty(sTuan)) sTuan = dr["sTuan"].ToString(); else break;
                    if (string.IsNullOrEmpty(sTuan = itm.Key)) continue;      //没有团号的意外错误
                    //发出一个团的
}
var storeGroup = dtFrom.AsEnumerable().GroupBy(t => new
                {   //linq-groupby分组
                    sStorer = t.Field<string>("sStorer"),
                    sStorerName = t.Field<string>("sStorerName"),
                    sParty3ID = t.Field<string>("sParty3ID")
                });

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值