[英]Access a property of a DbSet by name
我有一個DbSet<T>
我想按名稱訪問其中的一個屬性。
這可能嗎?
我基本上是在制作一個通用函數,以便對於我擁有的任何 DbSet,我可以指定一個列並讓它列出該列的值。
您可以通過執行context.Set(T)
從上下文中獲取DbSet
本身,但我不確定這些字段。
不久前我使用反射做了類似的事情。
T item = context.Set(T).First();
string propName = "MyProperty";
object value = item.GetType().GetProperty(propName).GetValue(item, null);
當然請注意,您要么需要手動將值轉換為特定類型,要么使用ToString
,它應該適用於所有基本類型。
這假設您已經擁有來自服務器的數據,現在需要對其進行處理。
編輯:
如果你想創建一個查詢,那么我找到了這個!
顯然,您正在尋找的內容如今已作為 Entity Framework 的一部分提供。
有一個擴展方法可用,它允許您使用.Select("propertyName")
返回IQueriable
。 請記住將System.Linq.Dynamic
添加到您的using
部分。
然后,您可以通過指定參數名稱來創建選擇查詢。
List<object> data = (db.Set<SetType>()
.Where("propertyName == @0 && someOtherProperty == @1", propertyValue, someOtherPropertyValue)
.Select("propertyName") as IEnumerable<object>).ToList();
使用提供的代碼,我能夠編寫一個 LINQ to Entities 查詢,如下所示:
var query = context.Set(Type.GetType("Person")).Select("Name");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.