了解Linq查询的基本知识

时间:2014-12-11 15:26:57

标签: c# sql asp.net linq

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

FirstName
SurName
DOB

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

3 个答案:

答案 0 :(得分: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,实体框架等。

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

答案 1 :(得分:1)

在Linq2Sql中,您可以通过

简单地选择所有字段

从datacontext开始:

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

答案 2 :(得分:0)

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