我得到一个字符串数组,其中包含属性名称。我只想在获取数据时加载这些属性,在本例中是通过实体框架从数据库获取数据。比如:
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文件并检查源。 DynamicLibrary.cs 中有一个 ClassFactory
,它允许您创建类型。
public Type GetDynamicClass(IEnumerable<DynamicProperty> properties)
using LinqString; // nuget
var result = db.myTable
.Where(x => x.Id == ”someValue”)
.Select("someProperty", "someOtherProperty")
.ToList();