2016-11-07 103 views
4

我得到一个包含属性名称的字符串数组。我只想在获取数据时才加载这些属性,在这种情况下从DB槽实体框架。喜欢的东西:为Linq Select语句创建一个匿名对象

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); 

回答

3

那不(直接)可能的,因为匿名类是产生在编译时。迭代字符串数组是在运行时。所以这是不可比的。


有动态LINQ的可能性,你应该阅读这个ScottGu的博客 :dynamic-linq它使用的技术在运行时创建的属性类型。下载dynamiclinqcsharp文件并检查源代码。 DynamicLibrary.cs中有一个ClassFactory,它允许您创建类型。 public Type GetDynamicClass(IEnumerable<DynamicProperty> properties)