2016-11-07 40 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)