LINQ的select new的问题

问题描述

List<Person>list=newList<Person>(){newPerson(){Name="张三",Age=25},newPerson(){Name="李四",Age=40}};varentity=frompinlistselectnew{p,sex="男"};entity得到的数据是[{"p":{"Age":25,"Name":"张三"},"sex":"男"},{"p":{"Age":40,"Name":"李四"},"sex":"男"}]想要的效果是[{"Age":25,"Name":"张三","sex":"男"},{"Age":40,"Name":"李四","sex":"男"}]在不知道person属性的情况下怎么得到这样的效果

解决方案

解决方案二:
varentity=frompinlistselectnew{Age=p.Age,Name=p.Name,sex="男"};

解决方案三:
引用1楼xdashewan的回复:

varentity=frompinlistselectnew{Age=p.Age,Name=p.Name,sex="男"};

不知道有Age、name属性的情况下,怎么得到?
解决方案四:
引用2楼gb19900526的回复:

不知道有Age、name属性的情况下,怎么得到?

反射获取Person类的属性
解决方案五:
引用3楼xdashewan的回复:

Quote: 引用2楼gb19900526的回复:
不知道有Age、name属性的情况下,怎么得到?

反射获取Person类的属性

能给个实例方法吗
解决方案六:
引用4楼gb19900526的回复:

能给个实例方法吗

用dynamiclinq可能可以解决,但selectnew里我也没试验过,能不能你还得自己试验下,只能给你两个帖子参考下http://stackoverflow.com/questions/1465700/system-linq-dynamic-select-new-into-a-listt-or-any-other-enumerablhttp://www.cnblogs.com/daviddai/archive/2013/03/09/2952087.html
解决方案七:
Person.getType().getProperties()
解决方案八:
Person有Sex这个属性吗?
解决方案九:
引用6楼u013315639的回复:

Person.getType().getProperties()

varentity=frompinlistselectnew{p.getType().getProperties(),sex="男"};无效的匿名类型成员声明符。匿名类型成员必须使用赋值、简单名称或成员访问来声明。在select里面用不了
解决方案十:
引用7楼starfd的回复:

Person有Sex这个属性吗?

sex是追加的属性
解决方案十一:
继承Person这个,子类添加一个sex属性classPerson{publicstringName{get;set;}publicintAge{get;set;}}classs_Person:Person{publicstringsex{get;set;}}List<Person>list=newList<Person>(){newPerson(){Name="张三",Age=25},newPerson(){Name="李四",Age=40}};varentity=frompinlistselectnews_Person{Name=p.Name,Age=p.Age,sex="男"};

解决方案十二:
用dynamic类型,不需要知道属性

时间: 2024-09-09 13:16:01

LINQ的select new的问题的相关文章

SQL语句转成LINQ:select *, (case tab1 when 1 then &amp;amp;#x27;y&amp;amp;#x27; when 2 then &amp;amp;#x27;N&amp;amp;#x27; end ) as test

问题描述 SQL语句转成LINQ:select*,(casetab1when1then'y'when2then'N'end)astestfromTaleftjoinTbONTa.pk_id=Tb.Fk_idwhereTalike'%key%' 解决方案 解决方案二:varq=fromtaindb.Tajointbindb.Tbonta.pk_idequalstb.Fk_idintotempfromttintemp.DefaultIfEmpty()whereta.Ta.Contains("key&

关于SQL语句转换成linq语句

问题描述 关于SQL语句转换成linq语句 SELECT * FROM dbo.[USER] u, (SELECT ua.User_Attention_Object_Id FROM dbo.User_Attention ua,dbo.[USER] u WHERE u.User_Id=ua.User_Attention_User_Id AND ua.User_Attention_User_Id=3) uaid WHERE u.User_Id=uaid.User_Attention_Object_I

把多表联查的sql语句转换成linq语句

问题描述 把多表联查的sql语句转换成linq语句 SELECT * FROM [group_product] where proid in(select proid from [group_browsehistory] where memid in(select memid from [group_browsehistory] where proid=12)) 在线等,这个sql语句怎么转换成linq??? 解决方案 from x in group_product where group_br

vb net 接口 泛型-VB.NET 泛型与接口问题

问题描述 VB.NET 泛型与接口问题 interface IDataElement property Name as string property Value as object end interface public class DataElementSet(Of T as IDataElement) implements IList(Of T) ... end class public Class A implements IDataElement ... end class publ

F#教程:高阶函数

所谓高阶函数就是将某个函数作为输入参数或者返回值的函数.从名字上来看挺难理解的,不过从C#的角度来看就是传入或返回delegate之类的. 在我们自己定义高阶函数之前我们还是先学会使用高阶函数. List中定义了很多高阶函数,这回就学习下其中的几个.首先试下find函数. let list = [15; 7; 8; 3; 6; 10] let even n = n % 2 = 0 let x = List.find even list printfn "%A" x 其中,find的第一

C#并发编程经典实例--并发编程概述

来自 "C#并发编程经典实例" 优秀软件的一个关键特征就是具有并发性.过去的几十年,我们可以进行并发编程,但是难度很大.以前,并发性软件的编写.调试和维护都很难,这导致很多开发人员为图省事放弃了并发编程.新版.NET 中的程序库和语言特征,已经让并发编程变得简单多了.随着Visual Studio 2012 的发布,微软明显降低了并发编程的门槛.以前只有专家才能做并发编程,而今天,每一个开发人员都能够(而且应该)接受并发编程. 1.1 并发编程简介 首先,我来解释几个贯穿本书始终的术语

asp.net-System.ArgumentNullException: 值不能为 null

问题描述 System.ArgumentNullException: 值不能为 null 行 47: 行 48: } 行 49: @(X.Viewport() 行 50: .Layout(LayoutType.Border) 行 51: .Items( [ArgumentNullException: 值不能为 null. 参数名: source] System.Linq.Enumerable.Select(IEnumerable1 source, Func2 selector) +4091099

Asp.net ystem.ArgumentNullException: 值不能为 null 参数名: source

问题描述 行47:</script>行48:}行49:@(X.Viewport()行50:.Layout(LayoutType.Border)行51:.Items([ArgumentNullException:值不能为null.参数名:source]System.Linq.Enumerable.Select(IEnumerable`1source,Func`2selector)+4091099ASP._Page_Areas_Facilities_Views_EquipmentPurchasin

C#结构数组最简单的初始化方式是什么?

问题描述 我要初始化的结构数组并非简单类型,而是有自定义类型,结构如下:structUIList{CMDcmd;//自定义枚举型stringdesc;ControlcheckBox;Controllabel;} 数组:UIList[]m_pList={{CMD.XXX,"XXX",checkBox_XXX,label_XXX},{CMD.YYY,"YYY",checkBox_YYY,label_YYY},} 1.这样写编译不过2.改成下面的还是编译不过UIList[