Используя LINQ, как я могу получить имена столбцов таблицы? С# 3.0, 3.5 framework
LINQ: получить имена столбцов таблицы
Ответ 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.