当前位置: 代码网 > it编程>编程语言>Asp.net > C# LINQ常用语法及实际应用示例

C# LINQ常用语法及实际应用示例

2025年10月21日 Asp.net 我要评论
1. linq 基础概念linq (language integrated query) 是 c# 中用于数据查询的语法,可以查询各种数据源(数组、集合、数据库等)。2. 基本语法结构查询表达式语法(

1. linq 基础概念

linq (language integrated query) 是 c# 中用于数据查询的语法,可以查询各种数据源(数组、集合、数据库等)。

2. 基本语法结构

查询表达式语法(类似 sql)

from 变量 in 数据源
where 条件
orderby 字段
select 结果

方法语法(使用 lambda 表达式)

数据源.方法(参数 => 表达式)

3. 常用的 linq 方法

筛选数据 - where

// 查询表达式
var result = from num in numbers
             where num > 5
             select num;
// 方法语法
var result = numbers.where(num => num > 5);

排序 - orderby / orderbydescending

// 升序
var result = numbers.orderby(num => num);
// 降序
var result = numbers.orderbydescending(num => num);
// 多字段排序
var result = students.orderby(s => s.age)
                    .thenby(s => s.name);

选择数据 - select

// 选择特定字段
var names = students.select(s => s.name);
// 创建新对象
var studentinfo = students.select(s => new {
    name = s.name,
    age = s.age
});

其他常用方法

// 取前n个
var top3 = numbers.take(3);
// 跳过前n个
var afterfirst3 = numbers.skip(3);
// 判断是否存在
bool haseven = numbers.any(n => n % 2 == 0);
// 判断是否所有元素都满足条件
bool allpositive = numbers.all(n => n > 0);
// 获取第一个元素
var first = numbers.first();
// 获取最后一个元素
var last = numbers.last();
// 计数
int count = numbers.count();
// 求和
int sum = numbers.sum();
// 最大值
int max = numbers.max();
// 最小值
int min = numbers.min();
// 平均值
double average = numbers.average();

4. 实际应用示例

学生数据示例

class student
{
    public string name { get; set; }
    public int age { get; set; }
    public int score { get; set; }
}
list<student> students = new list<student>
{
    new student { name = "alice", age = 20, score = 85 },
    new student { name = "bob", age = 22, score = 90 },
    new student { name = "charlie", age = 19, score = 78 }
};

常见查询操作

// 1. 筛选年龄大于20的学生
var olderstudents = students.where(s => s.age > 20);
// 2. 按分数降序排序
var sortedbyscore = students.orderbydescending(s => s.score);
// 3. 选择学生姓名和分数
var namescores = students.select(s => new { 
    s.name, 
    s.score 
});
// 4. 获取分数最高的学生
var topstudent = students.orderbydescending(s => s.score).first();
// 5. 计算平均分
var averagescore = students.average(s => s.score);
// 6. 分组查询
var groupbyage = students.groupby(s => s.age);

5. 在数组和集合中的应用

数组操作

csharp
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// 获取偶数
var evennumbers = numbers.where(n => n % 2 == 0);
// 平方每个数
var squares = numbers.select(n => n * n);
// 获取大于5的数并排序
var result = numbers.where(n => n > 5)
                   .orderby(n => n);

字符串数组

string[] names = { "alice", "bob", "charlie", "david" };
// 查找以a开头的名字
var anames = names.where(name => name.startswith("a"));
// 按长度排序
var sortedbylength = names.orderby(name => name.length);

到此这篇关于c# linq常用语法的文章就介绍到这了,更多相关c# linq语法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com