簡體   English   中英

按名稱訪問 DbSet 的屬性

[英]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 的這篇文章

使用提供的代碼,我能夠編寫一個 LINQ to Entities 查詢,如下所示:

var query = context.Set(Type.GetType("Person")).Select("Name");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM