C# 理解Linq查询的基本原理
假设我的数据库中有一个名为Table1的表。我在表1中有3列C# 理解Linq查询的基本原理,c#,sql,asp.net,linq,C#,Sql,Asp.net,Linq,假设我的数据库中有一个名为Table1的表。我在表1中有3列 在sql中,我只需从表1中选择*,它将显示该特定表中的所有内容。然而,我试图理解的是,如何使用C中的Linq从该表中选择所有值。表1在数据库中,前端正在使用ASP.NET和C开发。我似乎无法理解这一点。我对linq的了解很少,所以如果我犯了一个明显的错误,请原谅请参阅下面的链接,了解linq的介绍 Linq提供了一种查询数据的方法,但您仍然需要提供一种Linq访问该数据的方法——可以是通过Linq2Sql类、ADO、实体框架等 我是E
在sql中,我只需从表1中选择*,它将显示该特定表中的所有内容。然而,我试图理解的是,如何使用C中的Linq从该表中选择所有值。表1在数据库中,前端正在使用ASP.NET和C开发。我似乎无法理解这一点。我对linq的了解很少,所以如果我犯了一个明显的错误,请原谅请参阅下面的链接,了解linq的介绍 Linq提供了一种查询数据的方法,但您仍然需要提供一种Linq访问该数据的方法——可以是通过Linq2Sql类、ADO、实体框架等 我是EntityFrameworkEF的粉丝,在这里可以设置表示数据的对象,并使用上下文填充这些对象 它可能看起来像这样:
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中,您只需通过 从datacontext开始:
var db = new YourDataContext()
然后你可以做类似的事情
var myData = from row
in db.table1
select row
正如你指出的那样,你的知识太有限了。查看有关L2S的本系列:
由于您使用的是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);
}
}
LINQ只是一种查询语言。它不是特定于数据库的。我建议你们看一看类似ORM的实体框架,因为它可以帮你们做很多工作。您可能还想暂时不使用数据库,只需在基本内存数组上练习使用LINQ即可。@Arran我目前正在开发的网站使用EF 6,我已经完成了一半的项目,因此需要尽快习惯。我很感激你的建议意味着语言集成查询-它用于查询语言中集成的内容。例如,您可以使用.Where查询列表。实际上,它与数据库没有多大关系。@DionV。它与数据库有关,但并非与数据库有关。LINQ的一半功能是从集成到语言中的查询语言查询外部资源(如数据库)。LINQ只有一半用于查询内存中的数据序列。@Servy只是为了说明我的观点,因为我很固执;不。LINQ本身与数据库无关。像LINQ到SQL这样的扩展是可以实现的。OP没有特别要求它们中的任何一个,这意味着我给了他最简单的一个定义。为什么你要对数据进行无意义的投影?如果您没有要执行的操作,请忽略它。谢谢您的详细回答
public ObservableCollection<Table1> ReadTable1()
{
using (YourDBContext dc = new YourDBContext())
{
var data = (from x in dc.Table1
select x);
return new ObservableCollection<Table1>(data);
}
}