初学者如何在Linqpad中运行非常基本的Linq to Sql查询步骤

17

想要使用 LinqPad 学习 Linq,但不知从何开始,感到沮丧。假设我想写一个 C# 表达式和一个 C# 语句,其中我有一个名为 Products 的 SQL Server 表,并且我想提取所有价格大于50的行。你会如何编写它?

4个回答

27

假设我想编写一个C#表达式和C#语句,其中我有一个名为“Products”的SQL服务器表,并且我想提取所有价格大于50的行。你会怎么写呢?

LINQPad会自动为您构建类型化的DataContext,因此您不需要实例化任何内容。在C#表达式模式下,只需键入以下内容:

Products.Where(p => p.Price > 50)

按下F5键即可。或者,您可能更喜欢使用查询表达式:

from p in Products
where p.Price > 50
select p
在 C# 语句模式下,您需要调用 Dump() 方法来指示它将结果写出。您还需要用分号结束表达式:
Products.Where(p => p.Price > 50).Dump();

在 LINQPad 的示例部分中有更多的例子——看看 5 分钟的介绍即可。


谢谢@Joe。这正是我在寻找的。顺便说一下,表达式运行得很好,但当我运行“from p in Products where p.Price > 50 select p”语句时,我会收到错误“; expected”。我在结尾处添加了;,但也没有帮助。有什么想法吗? - Silverlight Student
这是因为您选择了C#语句。语句必须以;结尾,但表达式不能以;结尾。我只是跳过所有这些混乱,选择C#程序 :) - Joe
@Joe,你能帮我解决这个问题吗?:) http://stackoverflow.com/questions/19291255/linqpad-doesnt-render-group-collection - AuthorProxy
@alex-v-kostyukov,我想你是要问@joe-albahari而不是@joe。这有点让人困惑,因为他回答了问题,但我对此发表了评论,并且看起来我们是同一个人。加上我的用户名是joe :) 我先到这里来了! - Joe

11

只是想补充一下 - LINQ pad会自动将表名变成复数形式 - 我不知道这一点,花了我好几十分钟的时间摆弄

我试图从一个名为DentalApplication的表中进行选择

    DentalApplication.Where(a=> a.PackageID > 0)

给了我这个错误

    'LINQPad.User.DentalApplication' does not contain a definition for 'Where'

改成了

    DentalApplications.Where(a=> a.PackageID > 0)

而且它起作用了


默认情况下,Linqpad会将子关联属性转为复数形式。请参考https://dev59.com/nFzUa4cB1Zd3GeqP22hj。 - maoyang

3
var db = new MyDatabaseContext();  // Your database context.
var result = db.Products.Where(q=>q.Price > 50);

...其中db代表你的ORM上下文。 Price表示你在数据库中映射到Price字段。 result代表结果集--即你的数据库行/实体。


它会显示“找不到类型或命名空间名称'MyDatabaseContext'”。很抱歉我很无知,但我完全是Linq/ORM的新手。我需要在Linqpad中设置一些东西吗?我的印象是我可以像使用SQL管理工具一样直接使用linq to sql查询数据库表。 - Silverlight Student
你需要创建一个数据库映射。MyDatabaseContext只是一个虚拟名称,你可以用任何你的ORM命名。 - George Johnston
你知道在LinqPad中我应该在哪里创建映射吗? - Silverlight Student
阅读http://blog.trekforth.com/2009/07/querying-sql-with-linqpad.html中的链接,似乎我不需要创建任何映射。 - Silverlight Student

0

当我将其作为C#程序运行时,我遇到了以下错误:“'LINQPad.User.Products'不包含名称为'Price'的定义,也没有接受类型为'LINQPad.User.Products'的第一个参数的扩展方法'Price'”。我做错了什么? - Silverlight Student
你需要创建一个数据库映射。你有看过我发布的 Linq 2 SQL 教程链接吗?它涵盖了基础知识。你是否已经设置了一个包含产品表的数据库? - Maess
是的,我看到了,但在 LinqPad 中,我似乎只能找到“添加连接”选项。一旦我将连接添加到我的 SQL Server 数据库实例中,我就可以在左侧看到所有数据库/表等。我只是不知道在哪里创建数据库映射,也没有看到任何选项。 - Silverlight Student
抱歉,我不熟悉LinqPad。 - Maess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接