2016-10-06 28 views
1

LINQクエリを実行しようとしています。下のコードからわかるように、LINQに渡す前にテーブル( "TableName")の名前をつけようとしていますが、もちろんLINQは "TableName"という名前のテーブルを見つけることができません。これを行う方法については他の方法ですか?私はctxdataを試みましたが(TableName)、動作しませんでした。動的テーブル名を使用してLINQクエリを実行します。

  var TableName = ""; 
      TableName = "DATA_ + DistrictCode; 

      using (SFTEMPEntities1 ctxdata = new SSFTEMPEntities1()) 
      { 
       var queryAttributes = (from p in ctxdata.TableName //See this line 
            where p.Filename == FileName 
            select new { p.REF , p.JOB_TITLE }) 
            .Take(1); 


      } 

私はまだC#の初心者ですが、このコードに基づいて私に例を示すことができれば本当に感謝しています。

+0

たぶん、この質問(及びリンク質問)を助けることができますhttp://stackoverflow.com/questions/28099435/dynamic-table-名義イングランドン – robor78

答えて

0

Setメソッドを使用してデータコンテキストからテーブルを取得できますが、汎用パラメータSet<T>()またはType変数Set(Type type)のような要素の型が必要です。したがって、テーブル名で型を取得する方法を見つける必要があります。タイプ名をお持ちの場合は、アセンブリ名ctxdata.GetType().Assembly.GetType("TypeName")から名前をタイプすることができます。

用いた反射あなたは、このようにデータコンテキストからテーブルのプロパティを取得することができます。

var table = ctxdata.GetType().GetProperty(TableName).GetValue(ctxdata) as IQueryable; 
関連する問題