0

Take()次のコードでどのように使用しますか?

var context = new Entities();
BindingSource bi = new BindingSource();
var TableName = cboSelectTable.Text.ToString();    
bi.DataSource = context.GetType().GetProperty(TableName).GetValue(context, null);

ありがとう。

4

1 に答える 1

1

結果を適切なものにキャストする必要がありGetValue()ます。それは常に何らかのクラスタイプのシーケンスになりますか? その場合、C# 4 および .NET 4 以降では、一般的な共分散を使用できます。

var context = new Entities();
var tableName = cboSelectTable.Text.ToString();    
var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
var truncatedData = ((IQueryable<object>) rawData).Take(100);
var source = new BindingSource { DataSource = truncatedData };

ToList()afterを呼び出しTake(100)て、クエリ結果を具体化することもできます。

(これは、それが ... になると想定していIQueryable<T>ます。それがただのIEnumerable<T>, 代わりにそれにキャストされている場合。)

何が何であるかは明らかではありませんEntitiesが、リフレクションを使用せずにデータを取得する方法がある可能性は十分にあります。より多くの情報を提供していただければ、より多くの情報を提供できます。

于 2014-10-09T10:46:17.403 に答える