1

まだLINQ2SQLは初めてなので、私の無知を許してください...

1 つの Textbox と 1 つのボタンを含む 1 つのユーザー コンポーネントがあります。コンポーネントは、一般的な ListOfValue フィルターとして使用されます。コンポーネントには、ユーザーがコントロールのボタンをクリックしたときに開かれるフォームに渡される IQueryable を設定する関数が 1 つあります。フォームは、IQueryable からのデータで埋められたグリッド (c1flexgrid) で構成されます。IQueryable をデータソースとして取得するバインディングソースがフォームにあります。ユーザーはグリッド内で選択でき、エントリを選択した後、ダイアログが閉じられ、選択された行 (または行から選択された LINQ2SQL オブジェクト) がコントロールに戻されます。このコントロールでは、選択したオブジェクトから 1 つの特定のフィールドを表示したいと考えています。そのフィールドの名前は、文字列としてユーザー コントロールに渡されます。

私の問題は、「一般的な」LINQ2SQL オブジェクトからそのフィールド データを取得する方法がわからないことです。デバッガーでは、選択したオブジェクトが特定のエンティティ タイプ (クエリに対応) であることがわかります。

タイプ セーフなデータ バインディングのための C# の 'nameof' 演算子がないための回避策に似たものでしょう か? しかし、ちょうど反対の方法:)

どんな助けでも大歓迎です

4

1 に答える 1

1

IQueryable では、設計時に型 T がわからないことを前提としています。これが正しい場合は、リフレクションを使用して必要な値を取得する必要があります。

var value = typeof(T).GetProperty("MyField").GetValue(instance, null);

または、フィールドを実装する共通の基本型にインスタンスをキャストします。

CommonBase castInstance = (CommonBase)instance;
var value = castInstance.MyField;
于 2012-10-07T11:23:07.083 に答える