了解 Linq 查询的基础知识

本文关键字:基础知识 查询 Linq 了解 | 更新日期: 2023-09-27 18:33:55

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

FirstName
SurName
DOB

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

了解 Linq 查询的基础知识

有关 linq 的介绍,请参阅下面的链接

什么是 Linq,它有什么作用?

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

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

我是实体框架 (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,文件,数据库等等!

在 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

由于使用的是 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);
    }            
}