为Linq Select语句创建一个匿名对象
本文关键字:一个 对象 Select Linq 语句 创建 | 更新日期: 2023-09-27 18:16:44
我得到一个字符串数组,其中包含属性的名称。我想在获取数据时只加载这些属性,在这种情况下,从数据库通过实体框架。例如:
var result = db.myTable
.Where(x => x.Id == ”someValue”)
.Select(y => new {y.someProperty, y.someOtherproperty, ...});
如何从字符串数组创建匿名对象?我想要这样的:
var MyObj = new {};
foreach(var I in MyStrinArr)
{
... Add the properties here ...
}
var result = db.myTable.Where(x => x.Id==”someValue”).Select(y => obj);
这是不可能(直接)实现的,因为匿名类是在编译时生成的。迭代字符串数组是在运行时进行的。所以这是不可比较的。
动态linq有很多可能性,你应该阅读ScottGu的博客它正在使用在运行时创建带有属性的类型的技术。下载dynamiclinqcsharp文件并查看源代码。cs中有一个ClassFactory
,它允许您创建类型。public Type GetDynamicClass(IEnumerable<DynamicProperty> properties)