Подтвердить что ты не робот

LINQ: получить имена столбцов таблицы

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

Нижеприведенный код будет работать от возвратов всех имен столбцов таблицы

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

Ответ 4

Я наткнулся на этот вопрос, ища то же самое, и не видел здесь действительно хорошего ответа. Это то, что я придумал. Просто бросьте его в 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

Измените, как вы сочтете нужным.

Ответ 5

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

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

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

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

Ответ 6

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

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

Ответ 7

Итерации свойств ваших классов L2S с отражением

Ответ 8

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

Ответ 9

            var query = from x in DataBase.Table_Name
                        select x.Column_Name;

Ответ 10

sp_help 'TableName'

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

Ответ 11

В LinqPad:

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

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

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