首先建立数据上下文和实体类映射,然后使用LINQ语法进行查询、排序、分页等操作,通过SubmitChanges提交增删改。

在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; }
[Column]
public string Name { get; set; }
[Column]
public string Email { get; set; }}
创建数据上下文:
public class MyDbContext : DataContext
{
public Table Users;
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 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作为长期方案。










