LINQ: Получить имена столбцов таблицы - PullRequest
16 голосов
/ 26 ноября 2009

Используя LINQ, как я могу получить имена столбцов таблицы? C # 3.0, 3.5 framework

Ответы [ 11 ]

18 голосов
/ 16 августа 2010

Возможно, уже слишком поздно, но я решил эту проблему с помощью этого кода

var db = new DataContex();
var columnNames = db.Mapping.MappingSource
                      .GetModel(typeof(DataContex))
                      .GetMetaType(typeof(_tablename))
                      .DataMembers;
15 голосов
/ 08 января 2013

Приведенный ниже код сработает, возвращает все имена столбцов таблицы

var columnnames = from t in typeof(table_name).GetProperties() select t.Name
6 голосов
/ 21 апреля 2010

Я наткнулся на этот вопрос, ища то же самое и не нашел здесь действительно хорошего ответа. Это то, что я придумал. Просто добавьте его в LINQPad в режиме выражения C #.

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

Изменить по своему усмотрению.

5 голосов
/ 26 ноября 2009

Я предполагаю, что вы имеете в виду, используя LINQ to SQL, и в этом случае посмотрите на свойство DataContext.Mapping . Вот что я использую.

Если вы не имеете в виду это, возможно, вы можете уточнить, чего вы пытаетесь достичь?

3 голосов
/ 13 декабря 2011

Я использовал этот код в LinqPad

from t in typeof(table_name).GetFields() select t.Name
2 голосов
/ 26 ноября 2009

Используйте метод ExecuteQuery для контекста данных и выполните этот сценарий SQL:

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

Это дает вам IEnumerable<string> со всеми именами столбцов в указанной вами таблице.

Конечно, если вам нужно и нужно, вы всегда можете получить дополнительную информацию (например, тип данных, максимальная длина) из представления каталога sys.columns в SQL Server.

0 голосов
/ 04 июля 2014

В LinqPad:

TableNames.Take (1) работает.

Это быстро печатать. (Хотя вы находитесь в идеальном мире, было бы лучше не выбирать какие-либо строки.)

Обратите внимание, что это множественная форма TableName. Вы также можете выполнить Take (0) и просмотреть вкладку результатов SQL.

0 голосов
/ 04 июля 2014

sp_help 'TableName'

Опция для окна LinqPad SQL для сервера MS SQL

0 голосов
/ 17 марта 2013
            var query = from x in DataBase.Table_Name
                        select x.Column_Name;
0 голосов
/ 26 ноября 2009

Если вы говорите о получении столбцов для сопоставленной таблицы, то посмотрите этот ответ , чтобы узнать, как получить атрибуты столбцов. Оттуда вы можете получить имена столбцов, типы и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...