【发布时间】:2014-02-19 22:11:26
【问题描述】:
我需要一个表达式来获取集合中每个项目的类型。
我有一个这样的收藏:
var collection = new List<object>{1,2.2,"string",'c'};
可以像这样获取每个集合项的类型:
var myVariable= collection.Select(item => item.GetType())
但是我需要在运行时创建这个表达式。
我必须动态创建myVariable 之类的东西,但是如何?!
调试器向我显示myVariable 的内部表达式的值,如下所示:
{System.Linq.Enumerable+WhereSelectListIterator`2[System.Object,System.Type]}
EDIT1
问题说明: 假设我需要选择一个对象的一个属性。我猫这样写这个查询:
var lst = new List<MyClass>
{
new MyClass {Name = "myName1", Value = 1},
new MyClass {Name = "myName2", Value = 2}
};
var oneProperty = lst.Select(item => new {SelectedProp=item.Name});
结果是一个匿名类型的列表,包含 2 项:“myName1”和“myName2”。 现在我想将另一个属性添加到显示所选属性类型的结果列表中。以下代码让我如此列出:
var oneProperty = lst.Select(item => new {SelectedProp=item.Name,TypeOfProp=item.GetType() });
问题是在运行时创建这样的表达式以将表达式提供给实体框架并执行该表达式。问题解决了吗?
【问题讨论】:
-
用伪代码向我们展示您想要实现的目标。
-
鉴于建议的解决方案不能解决您的问题,请说明您要达到的目标!
-
帖子编辑和问题解释
标签: c# linq runtime expression gettype