LINQ中select操作符(四)
一、Select操作符对单个序列或集合中的值进行投影。所谓投影,比如有一个数据集,想用LINQ语法去操作数据集,会写一个LINQ的表达式,表达式会把数据集合中的数据简单的投影到一个变量中,并且可以通过这个变量去筛选数据。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LinqOfSelectOperation { public class Students { public string ID { get; set; } public string Name { get; set; } public string ClassName { get; set; } } class Program { static void Main(string[] args) { //使用集合初始化器给集合赋值 List<Students> studentList = new List<Students> { new Students(){ID="0001", Name="张三", ClassName="01"}, new Students(){ID="0002", Name="李四", ClassName="02"}, new Students(){ID="0003", Name="王五", ClassName="01"} }; //查询语法:全部返回 var query1 = (from p in studentList where p.Name.StartsWith("张") select p); //查询语法:返回匿名类 var query2 = (from p in studentList where p.Name.StartsWith("张") select new { p.ID, p.Name }); //查询语法:返回匿名类,属性重新命名 var query3 = (from p in studentList where p.Name.StartsWith("张") select new { newID = p.ID, newName = p.Name }); //查询方法: 全部返回, 可以省略最后的select延迟加载 var query4 = studentList.Where(p => p.Name.StartsWith("张")); //查询方法: 返回匿名类 var query5 = studentList.Where(p => p.Name.StartsWith("张")).Select(p => new { p.ID, p.Name }); //查询语法:返回匿名类,属性重新命名 var query6 = studentList.Where(p => p.Name.StartsWith("张")).Select(p => new { newID = p.ID, newName = p.Name }); } } }
二、带有迭代索引的select方法
class Program { static void Main(string[] args) { var oldlist = new List<String>() { "Chinese", "English", "Math", "PE" }; var newList = oldlist.Select((item, i) => $"{ i + 1}.{item}").ToList(); Console.WriteLine("无索引之前的数据"); oldlist.ForEach(Console.WriteLine); Console.WriteLine("有索引之前的数据"); foreach (var item in newList) { Console.WriteLine(item); } Console.ReadLine(); } }