匿名类型与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不成立。
匿名类型与Select方法实现自定义对象插入局部表结构中的更多相关文章
- 论DATASNAP远程方法支持自定义对象作参数
		
论DATASNAP远程方法支持自定义对象作参数 DATASNAP远程方法已经可以支持自定义对象作参数,这是非常方便的功能. 1)自定义对象 type TMyInfo = class(TObject) ...
 - datasnap远程方法支持自定义对象传参
		
有同仁需要远程方法传输自定义的数据类型,他以为要自己写代码会很复杂,其实DATASNAP早就为我们想到了. datasnap的数据序列和还原真是无与伦比的强大,其远程方法支持自定义对象传参,DATAS ...
 - 《精通C#》自定义类型转化-扩展方法-匿名类型-指针类型(11.3-11.6)
		
1.类型转化在C#中有很多,常用的是int类型转string等,这些都有微软给我们定义好的,我们需要的时候直接调用就是了,这是值类型中的转化,有时候我们还会需要类类型(包括结构struct)的转化,还 ...
 - 编写高质量代码改善C#程序的157个建议——建议26:使用匿名类型存储LINQ查询结果
		
建议26:使用匿名类型存储LINQ查询结果 从.NET3.0开始,C#开始支持一个新特性:匿名类型.匿名类型有var.赋值运算符和一个非空初始值(或以new开头的初始化项)组成.匿名类型有如下基本特性 ...
 - [C#]匿名类型的深拷贝
		
.net Framework 3.5 + C# 3 发布了包括LinQ等一系列功能,其中包括了匿名类型,而我们在升级到.net4后,发现原来写好的用于POCO的深拷贝方法 static object ...
 - C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数
		
一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...
 - 浅析HashSet add() 方法存储自定义类型对象的过程
		
一.自定义一个Student类 package date0504; public class Student { private String id; Student(String id){ this ...
 - javascript . 04 匿名函数、递归、回调函数、对象、基于对象的javascript、状态和行为、New、This、构造函数/自定义对象、属性绑定、进制转换
		
匿名函数: 没有名字的函数,函数整体加小括号不报错, 函数调用 : a:直接调用 (function (){函数体}) ( ) ; b:事件绑定 document.onlick = functio ...
 - C# 匿名对象(匿名类型)、var、动态类型 dynamic——实用之:过滤类属性、字段实用dynamic
		
例子 返回一个LIst<oject>类型 而oject含有 30个字段 而我只需要两个字段.这里实用dynamic 和 linq. 上代码: 注意select new {} 为匿名类型,这 ...
 
随机推荐
- DOCKER实战案例
			
操作系统:[root@yz6205 ~]# docker search busyboxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDbusybox Busybox ...
 - QListWidgetItem的图片大小问题
			
图片的大小是由listWidget的setIconSize设定的,而不是ListWidgetItem的SetIcon设定的
 - 【dlbook】机器学习基础
			
[机器学习基础] 模型的 vc dimension 如何衡量? 如何根据网络结构衡量模型容量?有效容量和模型容量之间的关系? 统计学习理论中边界不用于深度学习之中,原因? 1.边界通常比较松, 2.深 ...
 - oracle 存储过程心得2
			
1.退出存储过程 return if old_save_time = new_save_time then--没有最新数据,退出 insert into hy_data_handle_mark(id, ...
 - Kotlin 第二弹:Android 中 PDF 创建与渲染实践
			
这是 Kotlin 练习的的第二篇.这一篇的由来是因为刚刚在 Android 开发者官网查看 API 的时候,偶然看到了角落里面的 pdf 相关. 我仔细看看了详细文档,发现这个还蛮有意思的,关键是编 ...
 - Ubuntu安装最新版的nodejs
			
安装玩Ubuntu的虚拟机之后安装nodejs发现npm的版本才3.5.2,这都多老了?于是Google了一下,发现是由于Ubuntu官方维护的包源太老了,想要安装nodejs的最新版,两种方法,一种 ...
 - Unity3d 背景、音效 播放 简单demo
			
仅实现功能,AudioListener在MainCamera中 using UnityEngine; using System.Collections; using System.Collection ...
 - xml(带有命名空间的)读写操作
			
xml文件: <?xml version="1.0" encoding="UTF-8"?><!-- This file contains jo ...
 - (一)js概述
			
1. js:弱类型,动态类型,解释型的脚本语言. 2. 网景,布兰登艾奇,js和java没有关系,js的标准:ECMAscript. 3. js组成:ECMAscript + Bom ...
 - 高级C/C++编译技术之读书笔记(一)之编译/链接
			
最近有幸阅读了<高级C/C++编译技术>深受启发,该书深入浅出地讲解了构建过程(编译.链接)中的各种细节,从多个角度展示了程序与库文件或代码的集成方法,提出了面向代码复用和系统集成的软件架 ...