如何在linq to sql中执行Select All(*)操作

88
你如何在使用 Linq to SQL 时选择所有行?
Select * From TableA

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


所有列都是默认的。我不明白这个问题。更有意义的是询问如何选择* - Gert Arnold
10个回答

110
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 s
请问您能否解释一下为什么不需要显式使用 from row in TableA.Rows 呢?这是因为 Rows 是默认属性吗?这是 LINQ 的一个特性,还是其他地方内置的功能?只是好奇。 - rory.ap
@roryap 取决于你的数据库访问库,这里我假设是 LINQ to SQL,其中表格是行,ADO 或其他可能不同。 - Simon Buchan

74

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

无论哪种方式,实际上您都不需要做任何事情。

DataContext 拥有每个表格的一个属性;您可以直接使用该属性来访问整个表格。

例如:

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

1
我同意这个问题。这个回答比被选中的回答更有帮助,因为它更简单直接地回答了提问者的问题。 - tandrewnichols
2
这个答案应该成为最佳答案。让我们来修正一下 :) - d.popov
也许有一天它会被downvote,因为这个答案也不是“通用”的,尽管它满足了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
他要求查询语法和方法语法,所以我正在提供给他。 - Simon Fox
3
不要给他他所要求的东西;给他他所需要的。很明显他不是很了解LINQ-to-SQL。 - SLaks
不,我对LINQ-to-SQL还不是很了解。目前还没有时间阅读有关它的书籍,只有在需要信息时才开始查找。此外,我也在等待Enity框架变得更好。因为我更愿意学习它,因为它可以使用所有数据库。 - chobo2
2
很好,然而我的两种解决方案都没有问题。从构建更复杂的查询方面出发,它们为你提供了良好的基础。 - Simon Fox

4

如果您想从数据库中选择所有数据,可以尝试以下操作:

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

否则,您可以尝试以下方法:
var Registration = from reg in dcdc.GetTable<registration>() select reg;

方法语法:

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

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

ObjectDumper.Write(q)

2
假设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查询。

1
您可以使用简单的Linq查询来从SQL表中选择所有记录,如下所示:
var qry = ent.tableName.Select(x => x).ToList();

0

为什么不使用

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

这很简单。


0

我经常需要检索“所有”列,除了一些列。所以对于我来说,Select(x => x) 不起作用。

LINQPad 的编辑器可以自动将 * 展开为所有列。

enter image description here

在选择“* all”之后,LINQPad会展开所有列,然后我可以删除不需要的列。

enter image description here


0

简单 -

var data=db.table.ToList();

data是变量

db是你的dbcontext变量

table是你要获取数据的dbset表格。

最后将其转换为列表。


与其他答案相比,这个答案的附加价值是什么? - Gert Arnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接