Як це зробити Виділити все (*) у linq до sql


83

Як вибрати всі рядки під час створення linq до sql?

Select * From TableA

Будь ласка, як у синтаксисі запиту, так і в синтаксисі методу.

Відповіді:


103
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

Ще один, який я люблю робити, це. Візьміть (int), щоб витягнути всі стовпці для заданої кількості записів. Такі , як TableA.Take (100)
Брайена сек

Не могли б ви пояснити, чому вам не потрібно явно використовувати 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
Я повторюю це запитання. Це набагато корисніша відповідь, ніж обрана, оскільки вона є більш простою та прямою, відповідаючи на запитання Оперативного проекту.
tandrewnichols

2
Ця відповідь заслуговує на головну відповідь. Давайте це виправимо :)
d.popov

Можливо, вона колись була проти, тому що ця відповідь також не є "універсальною", хоча вона задовольняє OP. Для мене, використовуючи його з 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.
Слакс

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

3
Не давайте йому того, про що він просив; дайте йому те, що йому потрібно. Він, очевидно, не дуже добре розуміє LINQ-to-SQL.
Слакс

Ні, я ще не дуже добре розумію 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. Можна побудувати SELECTзапит SQL відповідно до бази даних у контексті.


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.