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语法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论