0
我有一個集合IEnumerable。在LINQ查詢中,我希望只從T類中選擇此集合中的屬性,並將其轉換爲匿名類型,其中T是POCO業務對象。從實體動態選擇屬性列表
例如:
我的IEnumerable包含屬性「Name」,「Age」。
我的POCO是:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
我想實現如下效果相同,但沒有硬編碼的匿名類型的成員,而是用我的PropertyInfo集合。
IEnumerable<Person> peeps = GetPeople();
var names = from p in peeps
select new {Name = p.Name, Age = p.Age};
如果我使用實體框架,我可以用Entity SQL動態構建的字符串where
條款,但後來雖然沒有嚴格的硬編碼,我仍然使用屬性的字符串名稱。
ADDED: 會不也許動態地構造爲用於確定哪些屬性包含在結果對象中的。選擇投影方法的表達?
我正在導出一個JobCard對象的集合。要包含在對象的CSV表示中的每個對象的屬性取決於用戶角色。此刻,我只是循環查看包含角色和用戶反射的屬性列表,以從每個JobCard對象獲取其值。 我只用'var'作爲例子。我可能不會使用'動態'嗎?但我對此一無所知。在這種情況下, – ProfK 2010-08-25 13:13:41
動態無助。我認爲反射是你唯一的選擇... – 2010-08-25 14:55:24
請看我的編輯。我知道我說過「在LINQ查詢中」,但僅僅爲了興趣,動態屬性集的限制依賴於平臺,可以使用實體框架來實現。 – ProfK 2010-08-25 15:34:01