2016-06-15 90 views
0

LINQ表達式我有這個LINQ查詢,其中「新」一句創建一個匿名類型創建SELECT句子

var query = from x in List 
      select new {x.Field1, x.Field2}; 

如何動態建立的LINQ表達式:

select new {x.Field1, x.Field2}; 

更多的上下文:

我們有李ST <客戶>其中客戶已性質A,B,C,d,E,F,G

我們需要有時只返回一些屬性:

第一個調用返回:

select new {x.A, x.B} 

第二次致電退貨:

select new {x.C, x.D} 

退貨是動態的!我有字符串數組中的屬性的名稱。

謝謝!

+0

你能詳細點嗎?這個問題不是很清楚。 –

+0

你爲什麼要標記EF,你在這種情況下使用它? – octavioccl

+0

Hi @YacoubMassad,我需要創建LINQ表達式,所以我可以調用「Select(linqExpression)」的「Select」方法。 – JaimeCamargo

回答

0

假設您想要檢索的屬性的CSV。你應該可以使用這個。

public static class ObjectExtensions 
{ 
    public static Dictionary<string,object> GetProperties(this object obj, string properties) 
    { 
     var propertyNames = properties.Split(','); 
     var result = new Dictionary<string, object>(); 
     var type = obj.GetType(); 
     foreach (var property in propertyNames) 
     { 
      var prop = type.GetProperty(property); 
      var value = prop.GetValue(obj); 
      result.Add(property, value); 
     } 
     return result; 
    } 
} 

它存儲在字典中

的使用將是關鍵值對。

var result = list.Select(p => p.GetProperties("Field1,Field2")); 
JsonSerializer.CreateDefault().Serialize(Console.Out, result);