• 匿名类型与Select方法实现自定义对象插入局部表结构中


    在提取局部表结构数据时,通过Select选取需要的字段,如下句,此时其实产生了一个不用于_menuMan的原新数据类型new { c.SYS_COMMANDS_ID,c.TXT_COMMANDTITLE },这样的类型就叫匿名类型

     var comdList = _menuMan.Load(c => c.FATHER_ID == null).OrderBy(c=>c.VAL_DISPLAYORDERID).Select(c=>new { c.SYS_COMMANDS_ID,c.TXT_COMMANDTITLE }).ToList(); 

    //注意下面这种对象声明方法叫匿名类型,不事先定义类或结构,而直接创建其对象。            

    //它与上面的Select对应,因为Select方法相当于创建了一种不同于初始表结构的新类型,要往其中添加成员,只能用这种匿名类型的方法。            

    //上面的Select也可写成Select(c=>new { id=c.SYS_COMMANDS_ID, name=c.TXT_COMMANDTITLE }),下面的匿名类型定义时也要把名称SYS_COMMANDS_ID改成id等            

    //创建该匿名类型的另一个自定义对象,并插入到0位置

    var sys = new { SYS_COMMANDS_ID = 0, TXT_COMMANDTITLE = "顶层菜单" };            

    comdList.Insert(0, sys);         

    //控件数据源绑定这样的匿名类型做数据源

    combRootMenu.DisplayMember = "TXT_COMMANDTITLE";            

    combRootMenu.ValueMember = "SYS_COMMANDS_ID";            

    combRootMenu.DataSource = comdList;

    扩展:比较两个匿名对象时,应该用Equal和不能用==运算符,因为前者是比较值,后者是比较地址。如:

    // 构建两个匿名类型,拥有相同的名称/值对
                var worker1 = new { FirstName = "Harry", SecondName = "Folwer", Level = 2 };
                var worker2 = new { FirstName = "Harry", SecondName = "Folwer", Level = 2 };

    这时,

    worker1.Equals(worker2)是成立的,而

    worker1==worker2不成立。

  • 相关阅读:
    mysql5.7 安装及主从搭建
    虚拟机加硬盘做逻辑卷
    mysql 5.7 主从同步问题
    Tomcat 配置全球服务器证书
    新建linux 服务器初始化配置
    python 字典 元组 集合
    python 列表
    35.再谈SpringBoot自定义日志配置--LogBack.xml
    36.SpringBoot应用属性加载和自动配置@EnableAutoConfiguration
    37.再谈Spring Boot Actuator
  • 原文地址:https://www.cnblogs.com/mol1995/p/7499206.html
Copyright © 2020-2023  润新知