zoukankan      html  css  js  c++  java
  • 匿名类型与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不成立。

  • 相关阅读:
    我用自己做的图书比价搜索买了一本书
    2.17
    最近的工作
    FireBug的Bug
    2.18
    tecent面试题解答
    .net杂记
    python的round测试
    最近在网上买书的体会
    关于迅雷评论的一个改造html css
  • 原文地址:https://www.cnblogs.com/mol1995/p/7499206.html
Copyright © 2011-2022 走看看