当前位置:编程学习 > C#/ASP.NET >>

Linq 动态查询返回类型

当我们动态使用Linq查询的时候,例如
实体Entity中如果有2个字段Name,string类型。Age 是Int类型

现在我要生成linq语句

Entity.Select(p=>p.Name)返回的是string类型的集合

Entity.Select(p=>p.Age)返回的是int类型的集合,如何也返回是string类型的集合呢?

因为我想使用动态linq拼接p=>这个语句。

            var pe = Expression.Parameter(typeof(T), "p");
            var property = Expression.Property(pe, fieldName);
            exps = Expression.Lambda<Func<Entity, 类型?>>(property, pe);
            return exps;
类型无法转换?
有什么办法解决呢?
动态linq不是很熟练,请高手赐教。谢谢!

linq lamda --------------------编程问答--------------------
引用 楼主 SnowyWolfOnline 的回复:
Entity.Select(p=>p.Name)返回的是string类型的集合

Entity.Select(p=>p.Age)返回的是int类型的集合,如何也返回是string类型的集合呢?

在Lamda表达式中,只要作个类型转换就可以了:
string[] result= Entity.Select(p=>Convert.ToString(p.Age));

你可以将这个思路应用到表达式树中去 --------------------编程问答-------------------- Entity.Select(p=>p.Age.ToString()); //这样就返回string类型了 --------------------编程问答-------------------- Entity.Select(p=>p.Age.ToString()); 
这种写法在LINQ2SQL里是可以的,不过在LINQ2EF里是不支持的

Entity.Select(p=>Convert.ToString(p.Age));
在二者下都是支持的,操蛋的MS --------------------编程问答-------------------- 哦哦哦,原来如此,学习了 --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
Entity.Select(p=>p.Age.ToString()); 
这种写法在LINQ2SQL里是可以的,不过在LINQ2EF里是不支持的

Entity.Select(p=>Convert.ToString(p.Age));
在二者下都是支持的,操蛋的MS

Entity.Select(p=>Convert.ToString(p.Age));

感觉重复的方法,
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,