如何在LINQ to SQL中选择All(*)


83

在对SQL执行linq时如何选择所有行?

Select * From TableA

请同时使用查询语法和方法语法。

Answers:


103
from row in TableA select row

要不就:

TableA

在方法语法中,与其他运算符一起使用:

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

本质上,您已经选择了所有列,然后select将其转换为您关心的列,因此您甚至可以执行以下操作:

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

我喜欢做的另一件事是.Take(int)提取给定记录数的所有列。例如TableA.Take(100)
brian

您能否解释一下为什么不需要显式使用from row in TableA.Rows?是否因为Rows是默认属性?这是LINQ的功能,还是其他地方的功能?只是好奇。
rory.ap 2015年

@roryap取决于您的数据库访问库,这里我假设是LINQ to SQL,其中表是行,ADO或其他可以不同的东西。
西蒙·布坎

69

您要选择所有行还是所有列?

无论哪种方式,您实际上都不需要执行任何操作。

DataContext为每个表都有一个属性。您只需使用该属性即可访问整个表。

例如:

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

1
我第二个问题。这是一个比所选答案更有用的答案,因为它更简单,更直接地回答了OP的问题。
tandrewnichols 2012年

2
这个答案应该是最佳答案。让我们解决这个问题:)
d.popov

也许有一天它被否决了,因为尽管它满足了OP,但这个答案也不是“通用的”。对我来说,当将它与EF一起使用时,allOrders是DBSet而不是IEnumerable,因此在此之后我无法再使用allOrders.Where()。可能我只是以错误的方式使用它或错过了一些东西,但是添加.Skip(0)对我来说是不可思议的。
Charles Roberto Canato

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); 

2
Dim q = From c In TableA
Select c.TableA

ObjectDumper.Write(q)

1

您可以按照以下方式使用简单的linq查询从sql表中选择所有记录

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


1

假设TableA作为table的实体TableATableADBEntitiesDB Entity类,

  1. LINQ方法
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   result = context.TableA.Select(s => s);
}
  1. LINQ到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展开*,然后可以删除不需要的列。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.