【问题标题】:Understanding the basic for Linq queries了解 Linq 查询的基础知识
【发布时间】:2014-12-11 15:26:57
【问题描述】:

假设我的数据库中有一个名为Table1 的表。我在Table1 中有 3 列名为

FirstName
SurName
DOB

在 sql 中,我只需执行select * from Table1,它就会显示该特定表中的所有内容。但是,我想了解的是如何在 C# 中使用 Linq 从该表中选择所有值。 Table1 在数据库中,前端正在使用 ASP.NET 和 C# 开发,我似乎无法理解这一点。我对linq 的了解很少,如果我犯了明显的错误,请见谅

【问题讨论】:

  • LINQ 只是一种查询语言。它并不特定于数据库。我建议你看看像实体框架这样的 ORM,因为它可以为你完成很多工作。您可能还想暂时不考虑数据库,只需在基本的内存数组上练习使用 LINQ。
  • @Arran 我目前正在开发的网站使用 EF 6 我已经完成了该项目,因此需要快速适应。感谢您的建议
  • LINQ 表示语言集成查询 - 它用于查询集成在语言中的内容。例如,您可以使用.Where() 查询List<>。它实际上与数据库没有太大关系。
  • @DionV。它有something 与数据库有关,虽然不是everything 与数据库有关。 LINQ 的一半是从集成到语言中的查询语言查询外部资源(例如数据库)的能力。只有一半的 LINQ 用于查询内存中的数据序列。
  • @Servy 只是为了说明我的观点,因为我很固执;不。 LINQ 自身与数据库无关扩展,例如 LINQ to SQL,可以。 OP 没有特别要求其中任何一个,这意味着我给了他最简单的定义。

标签: c# sql asp.net linq


【解决方案1】:

查看下面的链接了解 linq 的介绍

What is Linq and what does it do?

http://weblogs.asp.net/scottgu/using-linq-to-sql-part-1

Linq 提供了一种查询数据的方法,但您仍然需要提供一种 Linq 访问该数据的方法——通过 Linq2Sql 类、ADO、实体框架等。

我是 Entity Framework (EF) 的粉丝,您可以在其中设置表示数据的对象,并使用上下文来填充这些对象。

它可能看起来像这样:

public class Table1
{
    public string FirstName { get; set; }
    public string SurName { get; set; }
    public DateTime DOB { get; set; }
}

public class Table1Repository
{
    private readonly MyEntities _context;

    public Table1Repository()
    {
        this._context = new MyEntities();
    }

    public IQueryable<Table1> Get()
    {
        return this._context.Table1; // in effect your "Select * from table1"
    }

    public IQueryable<Table1> GetById(DateTime dob)
    {
        return this._context.Table1.Where(w => w.DOB == dob); // pulls records with a dob matching param - using lambda here but there is also "query expression syntax" which looks more like sql
    }

}

请注意,您是在表示数据的上下文上执行 linq 查询,而不是数据库本身。 Linq 非常强大,但您需要为其提供一种访问数据的方法。即使该数据是 xml、文件、数据库等等!

【讨论】:

  • 感谢详细解答
【解决方案2】:

在 Linq2Sql 中,您可以很简单地选择所有字段

从数据上下文开始:

var db = new YourDataContext()

然后你可以做类似的事情

var myData = from row
             in db.table1
             select row

正如你自己所说,你的知识太有限了。看看这个关于 L2S 的系列: http://weblogs.asp.net/scottgu/using-linq-to-sql-part-1

【讨论】:

    【解决方案3】:

    由于您使用的是 EF6,因此您可以使用 LinqToEntity 读取您的表格。

    public ObservableCollection<Table1> ReadTable1()
    {            
        using (YourDBContext dc = new YourDBContext())
        {
            var data = (from x in dc.Table1 
                        select x);
    
            return new ObservableCollection<Table1>(data);
        }            
    }
    

    【讨论】:

    • 你为什么要对数据进行毫无意义的投影?如果您没有要执行的操作,请忽略它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2021-04-07
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多