using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class TestOne
    {
      private const string column = "A,B,C,D,E";
      DataTable dt = new DataTable();
      List<KPIFormula> list = new List<KPIFormula>();

private List<KPIFormula> log;

public List<KPIFormula> Test()

{

//添加列
      dt.Columns.AddRange(column.Split(',').Select(x => new DataColumn(x)).ToArray());
      //继续添加新列
       List<string> addcols = new List<string>() { "F","G","H","I","J"};
       addcols.ForEach(x => dt.Columns.Add(x));

int k = 0;
       for (int i = 0; i < 5; i ++)
       {
         DataRow dr = dt.NewRow();
         for (int j = 0; j < 10; j++)
         {
            dr[j] = k++;
         }
         dt.Rows.Add(dr);
       }

//降序
       DataTable dtorder = dt.AsEnumerable().OrderByDescending(o => o["A"]).CopyToDataTable();

//lambda过滤
       List<string> pre = dt.AsEnumerable().Where(w => w.Field<string>("A").Contains("0") && w.Field<string>("B").Contains("1")).Select(w => w.Field<string>("C")).Distinct().ToList();

list = dt.AsEnumerable().Select(o =>
       {
         return new KPIFormula()
         {
            subject = o["A"].ToString(),
            name = o["B"].ToString(),
            formula = o["C"].ToString()
          };
        }).ToList();

//对数据做一些处理
        TestTwo(ref list);

return list;
       }

public List<KPIFormula> TestTwo(ref List<KPIFormula> kpilist)
      {
        if (log == null)
        {
          log = new List<KPIFormula>();
          int flag = 0;
          kpilist.ForEach(c =>
          {
            if (c == null) return;
            var item = new KPIFormula
            {
              subject = c.subject + flag,
              name = c.name + flag,
              formula = c.formula + flag
            };
            log.Add(item);
            flag++;
          });
        }
        kpilist = log;
        return kpilist;
      }
  }

//定义KPIFormula对象集

public class KPIFormula
  {
     public string subject { set; get; }
     public string name { set; get; }
     public string formula { set; get; }
  }

}

lambda表达式操作DataTable番外篇的更多相关文章

  1. lambda表达式操作DataTable

    using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text; ...

  2. 0-ajax操作json(番外篇)

    [可以先看后边再看此文] get获取json 前端代码 <!DOCTYPE html> <html> <head> <meta charset="u ...

  3. 《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)

    1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,于是写了这一篇文章,另外也是 ...

  4. 《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)

    1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何自动化测试,这一篇宏哥在网上找了一个问卷调查,给小伙伴或童鞋们来演示一下.上 ...

  5. 番外篇 之 C#委托

    对于上一节 番外篇之C#多线程的反思 反思一:   Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...

  6. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  7. (八)羽夏看C语言——C番外篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...

  8. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 【重走Android之路】【番外篇】有关于null的一些知识点

    [重走Android之路][番外篇]有关于null的一些知识点   1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...

随机推荐

  1. 关于 Blob

    博客地址:https://ainyi.com/88 对于 Blob,前端开发中可能比较少遇到:数据库中可使用 Blob 概念,例如 Mysql 存储二进制数据的类型就是 Blob,也就是说图片可存储于 ...

  2. JavaScript之ES5的继承

    自从有了ES6的继承后,ES5的继承也退出了舞台,在实际开发也不会用得着: 先看看ES6的继承 class Father{ constructor(a){ console.log(a); } play ...

  3. 程序员的踩坑经验总结(一):如何把Bug的偶现变必现

    程序员的踩过的坑也是可以分类的,很常见又很难解决的一类是偶然的现象,表现起来比较怪异. 而把一个问题Bug的偶现变成必现,是开发人员的一种能力.我认为也应该是测试人员的一种能力,但是各个公司要求不一样 ...

  4. 黑马vue学习的总结,vue笔记

    cls:清除终端输出 $refs $http $route 使用this.$emit('show')来调用父方法

  5. 最短路径——floyd算法代码(c语言)

    最短路径问题 昨天自己试了试写一下dijkstra的算法博客 dijkstra链接在这← 今天来更floyd算法,感觉非常简单果然暴力才是解决一切的王道 一.总体思想 floyd算法就是每一次从邻接矩 ...

  6. 不会看 Explain执行计划,劝你简历别写熟悉 SQL优化

    昨天中午在食堂,和部门的技术大牛们坐在一桌吃饭,作为一个卑微技术渣仔默默的吃着饭,听大佬们高谈阔论,研究各种高端技术,我TM也想说话可实在插不上嘴. 聊着聊着突然说到他上午面试了一个工作6年的程序员, ...

  7. linux常用命令---域名服务

    域名服务

  8. 汉字统计(hdu2030)

    输入格式:一个整型,再循环带有空格的字符串 思考:用scanf_s()函数输入整型,然后一个大循环,再用gets_s()函数输入带空格的字符串. 注意:scanf_s()函数多加了%c,&d, ...

  9. JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签

    个人说明:为了简单实现导出数据较少的EXCEL(根据自定义书签模板) 一.替换Excel表格标签方法```/** * 替换Excel模板文件内容 * @param map * 需要替换的标签建筑队形式 ...

  10. mantisbt2.22.1 中使用自带的phpmailer发送邮件(实测可用)

    mantis最新版本安装无难度,直接集成LAMP环境,解压放到web目录下运行,按界面显示一步步操作. 1.前提默认已安装好mantis,自带phpmailer的路径为:mantisbt2/vendo ...