簡體   English   中英

如何在C#中將Local與反射一起使用?

[英]How to use Local with reflection in c#?

也許這很簡單,但是我找不到答案。 我可以使用反射來編寫以下代碼嗎?

AdminEntities context= new AdminEntities(); 
datagridview1.DataSource = context.TABLENAME.Local.ToBindingList();

我嘗試了以下方法:

BindingSource rtBindingSource = new BindingSource();
var TableName = cboSelectTable.Text.ToString();
AdminEntities context = new AdminEntities();
var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
var truncatedData = ((IQueryable<object>)rawData).Local.ToBindingList();
var binding = new BindingList<object>(truncatedData);
rtBindingSource.DataSource = new BindingSource { DataSource = binding };
datagridview1.DataSource = rtBindingSource;

但它給出了錯誤:“ System.Linq.IQueryable”不包含“ Local”的定義,並且找不到擴展方法“ Local”接受類型為“ System.Linq.IQueryable”的第一個參數

我從來沒有對entity-framework做過很多事情,但是明顯的問題似乎是您試圖在此處投射到錯誤的對象:

var truncatedData = ((IQueryable<object>)rawData).Local.ToBindingList();

我相信rawData是一個DbSet ,它沒有實現IQueryable<T>接口。 請注意,它確實實現了IQueryable但這不是通用版本,也無論如何都無法從DbSet獲取Local屬性。 將上面的行更改為以下內容可能會有所幫助:

var truncatedData = ((DbSet)rawData).Local.ToBindingList();

暫無
暫無

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

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