Как сделать Select All (*) в linq to sql


84

Как выбрать все строки при выполнении linq to sql?

Select * From TableA

Пожалуйста, используйте как синтаксис запроса, так и синтаксис метода.

Ответы:


104
from row in TableA select row

Или просто:

TableA

В синтаксисе метода с другими операторами:

TableA.Where(row => row.IsInteresting) // no .Select(), returns the whole row.

По сути, вы уже выбираете все столбцы, затем выбор преобразует их в столбцы, которые вам нужны, поэтому вы даже можете делать такие вещи, как:

from user in Users select user.LastName+", "+user.FirstName

Еще один, который мне нравится делать, - это .Take (int), чтобы вытащить все столбцы для заданного количества записей. Например, TableA.Take (100)
brian s

Не могли бы вы объяснить, почему вам не нужно явно использовать from row in TableA.Rows? Это потому, что Rowsэто свойство по умолчанию? Это особенность LINQ или что-то еще? Просто любопытно.
rory.ap

@roryap зависит от вашей библиотеки доступа к БД, здесь я предполагаю LINQ to SQL, где таблица - это строки, ADO или что-то другое.
Саймон Бьюкен

69

Вы хотите выбрать все строки или все столбцы?

В любом случае, на самом деле вам ничего не нужно делать.

DataContext имеет свойство для каждой таблицы; вы можете просто использовать это свойство для доступа ко всей таблице.

Например:

foreach(var line in context.Orders) {
    //Do something
}

1
Я повторяю этот вопрос. Это гораздо более полезный ответ, чем выбранный, потому что он проще и более прямо отвечает на вопрос OP.
tandrewnichols

2
Этот ответ заслуживает звания главного ответа. Давайте исправим это :)
d.popov

Возможно, когда-нибудь за него проголосуют против, потому что этот ответ также не является «универсальным», хотя он удовлетворяет ОП. Для меня при использовании с EF allOrders - это DBSet, а не IEnumerable, поэтому сразу после этого я не могу allOrders.Where (). Возможно, я просто неправильно его использую или что-то пропустил, но добавление .Skip (0) сделало для меня волшебство.
Чарльз Роберто Канато,

24
using (MyDataContext dc = new MyDataContext())
{
    var rows = from myRow in dc.MyTable
               select myRow;
}

ИЛИ ЖЕ

using (MyDataContext dc = new MyDataContext())
{
    var rows = dc.MyTable.Select(row => row);
}

6
Не делайте ничего из этого. Вместо этого просто напишите var rows = dc.MyTable.
SLaks

2
он попросил синтаксис запроса и синтаксис метода, так что вот что я ему даю.
Саймон Фокс,

3
Не давайте ему то, о чем он просил; дать ему то, что ему нужно. Очевидно, он не очень хорошо понимает LINQ-to-SQL.
SLaks

Нет, я еще не очень хорошо понимаю LINQ-to-SQL. У меня нет времени читать книги об этом, но когда мне нужна информация, я начинаю осматриваться. Плюс жду пока фреймворки Enity получше. Поскольку я скорее узнаю об этом, поскольку он может использовать все базы данных.
chobo2

2
Достаточно справедливо, однако в любом из предложенных мной решений нет ничего плохого. Они дают вам хорошую базу для начала с точки зрения создания запроса большей сложности.
Саймон Фокс,

4

вы хотите выбрать все данные из базы данных, тогда вы можете попробовать это: -

dbclassDataContext dc= new dbclassDataContext()
List<tableName> ObjectName= dc.tableName.ToList();

в противном случае вы можете попробовать это: -

var Registration = from reg in dcdc.GetTable<registration>() select reg;

и метод Syntex: -

 var Registration = dc.registration.Select(reg => reg); 


1

Вы можете использовать простой запрос linq, чтобы выбрать все записи из таблицы sql

var qry = ent.tableName.Select (x => x) .ToList ();


1

Предполагая, что TableAкак объект таблицы TableAи TableADBEntitiesкак класс объекта DB,

  1. LINQ метод
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   result = context.TableA.Select(s => s);
}
  1. Запрос LINQ-to-SQL
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   var qry = from s in context.TableA
               select s;
   result = qry.Select(s => s);
}

Собственный SQL также можно использовать как:

  1. Собственный SQL
IList<TableA> resultList;
using (var context = new TableADBEntities())
{
   resultList = context.TableA.SqlQuery("Select * from dbo.TableA").ToList();
}

Примечание: dboявляется владельцем схемы по умолчанию в SQL Server. Можно построить SQL- SELECTзапрос по базе данных в контексте.


0

Почему бы тебе не использовать

DbTestDataContext obj = new DbTestDataContext();
var q =from a in obj.GetTable<TableName>() select a;

Это просто.


0

Мне часто нужно получить «все» столбцы, кроме нескольких. поэтому Select (x => x) у меня не работает.

Редактор LINQPad может автоматически * расширяться до всех столбцов.

введите описание изображения здесь

после выбора «* все» LINQPad расширяется *, после чего я могу удалить ненужные столбцы.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.