請問PROPNAME
可能是T
類型的任何財產嗎?用反射來構建它,還是有一個很好的LINQ方法來做到這一點?LINQ列表屬性到數組?
T[] vals = people.Select(x => x.PROPNAME).ToArray<T>();
這是到目前爲止,我已經得到了最好:
public T[] ConvertListCol<TFrom,T>(IEnumerable<TFrom> list, string col)
{
var typ = typeof (TFrom);
var props = typ.GetProperties();
var prop = (from p in props where p.Name == col select p).FirstOrDefault();
var ret = from o in list select prop.GetValue(o, null);
return ret.ToArray<T>();
}
得到了在返回一個錯誤......但越來越近。沒關係,但是比我希望的有點混亂。
你一個陣列中後「人」的財產名稱? –
您是否試圖製作可重用的代碼片段,您可以在其中指定任何屬性並獲取字符串表示形式的集合? – Tejs
情況是有很多屬性的大型poco對象,並且API希望一次只能看到一列,而不是一次一行。 – sgtz