C#中如何使用LINQ to SQL进行数据库查询?基本语法是什么?

来源:这里教程网 时间:2026-02-21 17:27:41 作者:

在C#中使用LINQ to SQL进行数据库查询,首先需要建立数据模型与数据库表的映射关系。它允许你用类似SQL的语法直接在C#代码中操作数据库,使查询更直观、类型安全。

1. 建立数据上下文和实体类

LINQ to SQL的核心是
DataContext
的子类,用于表示数据库连接和操作入口。每个数据库表对应一个标记为
[Table]
的实体类。

示例:假设有一个

Users
表,包含
Id
Name
Email
字段。

定义实体类:

[Table(Name = "Users")]
public class User
{
    [Column(IsPrimaryKey = true)]
    public int Id { get; set; }
<pre class="brush:php;toolbar:false;">[Column]
public string Name { get; set; }
[Column]
public string Email { get; set; }

}

创建数据上下文:

public MyDbContext(string connectionString) : base(connectionString) { }

2. 基本查询语法

通过
from ... where ... select
结构编写查询,类似于SQL但集成在C#中。

Users
表中查询所有用户:

var query = from u in db.Users
            select u;

查询名字为"张三"的用户:

var query = from u in db.Users
            where u.Name == "张三"
            select u;

查询并投影部分字段(如只取Name和Email):

var query = from u in db.Users
            where u.Name.Contains("李")
            select new { u.Name, u.Email };

3. 常用操作示例

LINQ to SQL支持过滤、排序、分页、连接等常见操作。 排序:
OrderBy
ThenBy
var sorted = from u in db.Users
               orderby u.Name
               select u;
分页:使用
Skip
Take
int pageSize = 10;
int page = 2;
var paged = db.Users.Skip((page - 1) * pageSize).Take(pageSize);
模糊查询:使用
Contains
StartsWith
var result = from u in db.Users
               where u.Email.Contains("@qq.com")
               select u;
多条件查询:
var result = from u in db.Users
               where u.Name.StartsWith("王") && u.Id > 5
               select u;

4. 执行查询与更新数据

查询不会立即执行,而是延迟加载。调用
ToList()
FirstOrDefault()
等方法才会触发SQL执行。

获取结果列表:

List<User> users = query.ToList();

获取单条记录:

User user = db.Users.FirstOrDefault(u => u.Id == 1);

插入新记录:

User newUser = new User { Name = "赵六", Email = "zhaoliu@abc.com" };
db.Users.InsertOnSubmit(newUser);
db.SubmitChanges();

更新记录:

User user = db.Users.FirstOrDefault(u => u.Id == 1);
if (user != null)
{
    user.Email = "newemail@abc.com";
    db.SubmitChanges();
}

删除记录:

User user = db.Users.FirstOrDefault(u => u.Id == 1);
if (user != null)
{
    db.Users.DeleteOnSubmit(user);
    db.SubmitChanges();
}

基本上就这些。只要配置好映射和连接,就能用简洁的C#语法完成大多数数据库操作。注意LINQ to SQL适用于简单场景,微软已推荐更现代的Entity Framework作为长期方案。

相关推荐