web-dev-qa-db-ja.com

LINQ:テーブルの列名を取得する

LINQを使用して、テーブルの列名を取得するにはどうすればよいですか? C#3.0、3.5フレームワーク

17

LINQ to SQLを使用することを意味していると思います。その場合は、 DataContext.Mapping プロパティを確認してください。それが私が使っているものです。

それを意味しないのなら、おそらくあなたはあなたが達成しようとしていることについて詳しく説明することができますか?

6
RichardOD

多分手遅れですが、私はこのコードでこの問題を解決しました

var db = new DataContex();
var columnNames = db.Mapping.MappingSource
                      .GetModel(typeof(DataContex))
                      .GetMetaType(typeof(_tablename))
                      .DataMembers;
20
erkan

以下のコードは、テーブルのすべての列名を返すから機能します

var columnnames = from t in typeof(table_name).GetProperties() select t.Name
15
ravi kumar

私は同じことを探してこの質問に出くわしました、そしてここで本当に良い答えを見ませんでした。これが私が思いついたものです。 C#式モードでLINQPadにスローするだけです。

from t in typeof(UserQuery).GetProperties()
where t.Name == "Customers"
from c in t.GetValue(this,null).GetType().GetGenericArguments()[0].GetFields()
select c.Name

必要に応じて変更します。

6
Marty Neal

LinqPadでこのコードを使用しました

from t in typeof(table_name).GetFields() select t.Name
3
Don

データコンテキストでExecuteQueryメソッドを使用して、次のSQLスクリプトを実行します。

var columnNames = ctx.ExecuteQuery<string>
    ("SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('your table name');");

これにより、指定したテーブル内のすべての列名を含むIEnumerable<string>が得られます。

もちろん、必要に応じて、SQLServerのsys.columnsカタログビューからいつでもより多くの情報(データ型、最大長など)を取得できます。

2
marc_s

sp_help'TableName '

MssqlサーバーへのLinqPadSQLウィンドウのオプション

0
Curtis Yallop
            var query = from x in DataBase.Table_Name
                        select x.Column_Name;
0
William

マップされたテーブルの列を取得することについて話している場合は、 この回答 を参照して、列属性を取得する方法を確認してください。そこから、列名、タイプなどを取得できます。

0
Mike Two

LinqPadの場合:

TableNames.Take(1)は機能します。

入力は速いです。 (理想的な世界ではありますが、行を選択しない方がよいでしょう。)

TableNameの複数形であることに注意してください。 Take(0)を実行して、[SQL結果]タブを確認することもできます。

0
Curtis Yallop

リフレクションを使用してL2Sクラスのプロパティを反復します

0
Matt Kocaj