【问题标题】:How to do Select All(*) in linq to sql如何在 linq to sql 中选择全部(*)
【发布时间】:2021-04-22 20:11:56
【问题描述】:

linq to sql时如何选择所有行?

Select * From TableA

请在查询语法和方法语法中。

【问题讨论】:

  • 所有列都是默认值。我不明白这个问题。询问如何选择*会更有意义。

标签: linq-to-sql


【解决方案1】:
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)
  • 您能否解释一下为什么您不需要明确使用from row in TableA.Rows?是因为Rows 是默认属性吗?这是 LINQ 的一个特性,还是其他地方的特性?只是好奇。
  • @roryap 取决于您的数据库访问库,这里我假设 LINQ to SQL,其中表是行、ADO 或其他任何可能不同的地方。
【解决方案2】:

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

不管怎样,你实际上不需要做任何事情。

DataContext 对每个表都有一个属性;您可以简单地使用该属性来访问整个表。

例如:

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

【讨论】:

  • 我支持这个问题。这是一个比所选答案更有帮助的答案,因为它更简单、更直接地回答了 OP 的问题。
  • 这个答案当之无愧的最佳答案。让我们解决这个问题:)
  • 也许有一天它被否决了,因为这个答案也不是“普遍的”,尽管它满足了 OP。对我来说,在将它与 EF 一起使用时,allOrders 是 DBSet 而不是 IEnumerable,所以在那之后我不能 allOrders.Where()。可能我只是以错误的方式使用它或遗漏了一些东西,但添加 .Skip(0) 对我来说很神奇。
【解决方案3】:
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);
}

【讨论】:

  • 不要这样做。相反,只需写var rows = dc.MyTable
  • 他要求查询语法和方法语法,这就是我给他的。
  • 不要给他他所求的;给他他需要的东西。他显然不太了解 LINQ-to-SQL。
  • 不,我还不太了解 LINQ-to-SQL。没有时间阅读有关它的书籍,只是当我需要信息时,我开始四处寻找。另外,我正在等到 Enity 框架更好。因为我宁愿学习它,因为它可以使用所有数据库。
  • 很公平,但是我提供的任何一种解决方案都没有问题。它们为您构建更复杂的查询提供了良好的基础。
【解决方案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); 

【讨论】:

    【解决方案5】:
    Dim q = From c In TableA
    Select c.TableA
    
    ObjectDumper.Write(q)
    

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

        【解决方案7】:

        假设TableA 是表TableA 的一个实体,TableADBEntities 是DB Entity 类,

        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 中的默认架构所有者。可以根据上下文中的数据库构造一个 SQLSELECT 查询。

        【讨论】:

          【解决方案8】:

          你为什么不使用

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

          这很简单。

          【讨论】:

            【解决方案9】:

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

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

            select '* all' 后,LINQPad 展开 *,然后我可以删除不需要的列。

            【讨论】:

              【解决方案10】:

              简单-

              var data=db.table.ToList();

              数据是可变的

              db 是你的 dbcontext 变量

              table 是要从中获取数据的 dbset 表。

              最后在列表中转换。

              【讨论】:

              • 与所有其他答案相比,此答案的附加值是多少?
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-10-19
              • 2011-09-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多