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

小老鼠
发布: 2025-10-08 12:32:01
原创
563人浏览过
首先建立数据上下文和实体类映射,然后使用LINQ语法进行查询、排序、分页等操作,通过SubmitChanges提交增删改。

c#中如何使用linq to sql进行数据库查询?基本语法是什么?

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

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

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

示例:假设有一个Users表,包含IdNameEmail字段。

定义实体类:

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

[Column]
public string Email { get; set; }
登录后复制

}

创建数据上下文:

public class MyDbContext : DataContext
{
    public Table<User> Users;
<pre class="brush:php;toolbar:false;"><code>public MyDbContext(string connectionString) : base(connectionString) { }
登录后复制

}

2. 基本查询语法

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

Users表中查询所有用户:

var query = from u in db.Users
            select u;
登录后复制

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

阿里云-虚拟数字人
阿里云-虚拟数字人

阿里云-虚拟数字人是什么? ...

阿里云-虚拟数字人2
查看详情 阿里云-虚拟数字人
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支持过滤、排序、分页、连接等常见操作。
  • 排序:OrderByThenBy
  • var sorted = from u in db.Users
                   orderby u.Name
                   select u;
    登录后复制
  • 分页:使用SkipTake
  • int pageSize = 10;
    int page = 2;
    var paged = db.Users.Skip((page - 1) * pageSize).Take(pageSize);
    登录后复制
  • 模糊查询:使用ContainsStartsWith
  • 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作为长期方案。

以上就是C#中如何使用LINQ to SQL进行数据库查询?基本语法是什么?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号