ASP.NET中linq select的用法

来源:互联网 发布:剑灵捏人灵族数据 编辑:程序博客网 时间:2024/06/08 03:59

Linq中select查询和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后,并把子句中的变量也就是结果返回回来;分别为简单用法、匿名类型形式、条件形式、指定类型形式、筛选形式、整形类型形式、嵌套类型形式、本地方法调用形式、Distinct形式。

ASP.NET中linq select的综合实例

 

class Program     {         private static List <Student> GetStudents()         {             List <Student> students = new List <Student> {             new Student{ Name="YOUNG", Age=25, Language="Chinese"},             new Student{ Name="JESSIE", Age=21, Language="Scotland"},             new Student{ Name="KELLY", Age=18, Language="English"},             new Student{ Name="JUNE", Age=20, Language="English"},             new Student{ Name="ADRIAN", Age=22, Language="Italy"},             new Student{ Name="BRUCE", Age=17, Language="Scotland"},             new Student{ Name="BRANT", Age=30, Language="Germany"},             new Student{ Name="BEN", Age=25, Language="Chinese"}             };             return students;         }         static void Main(string[] args)         {             List <Student> studentList = GetStudents();             Select(studentList);         }         private static void Select <T>(T studentList)         {             OnlySearch(studentList);             SearchCollectChangeOtherCollect(studentList);             BuilderAnomy();             BuilderAnomyExter();             SelectLambda();             ComplexSelect();             ComplexSelectLambda();         }         private static void OnlySearch <T>(T studentList)         {             Console.WriteLine(" <hr>只查询合适对象集合的某个属性: <br>");             //lamb的写法             var students = RevealChangeType(studentList).Where(n=>n.Language == "Chinese").Select(n=>n.Name);             //linq的写法             //var students = from n in RevealChangeType(studentList)             //              where n.Language == "Chinese"             //              select n.Name;             foreach (var student in students)             {                 Console.WriteLine(string.Format(" <span class='result'>{0} </span>", student));             }         }         private static IEnumerable <Student> RevealChangeType <T>(T obj)         {             IEnumerable <Student> student = obj as IEnumerable <Student>;             return student;         }         private static void SearchCollectChangeOtherCollect <T>(T obj)         {             Console.WriteLine(" <hr>从一个集合中查询,转化到另外一个集合: <br>");             //age Array             int[] intArray ={ 25, 1, 4, 3 };             //lamb的写法             var students = intArray.SelectMany(n=>RevealChangeType(obj).Where(s=>s.Age == n));             //linq的写法             //var students = from s in RevealChangeType(obj)             //              from n in intArray             //              where s.Age == n             //              select s;             foreach (var student in students)             {                 Console.WriteLine(string.Format(" <span class='result'>{0} </span>", student.Name));             }         }         private static void BuilderAnomy()         {             Console.WriteLine(" <hr>构建匿名类型: <br>");             List <Student> studentList = GetStudents();             int[] intArray = { 3, 1, 6, 4 };             //lamb的写法             var stu = intArray.Select(n=>new { Id = n, Name = (studentList as List <Student>)[n].Name });             //linq的写法             //var stu = from n in intArray             //          select  new{Id = n,Name=(studentList as List <Student>)[n].Name};             foreach (var s in stu)             {                 Console.WriteLine(string.Format(" <div class='result'>id:{0};name:{1} </div>", s.Id, s.Name));             }         }         private static void BuilderAnomyExter()         {             Console.WriteLine(" <hr>构建匿名类型2——扩展已有类: <br>");             List <Student> studentList = GetStudents();             int[] intArray = { 3, 1, 6, 4 };             //lamb的写法             var students = intArray.Select(n=>new { Id = n, studentList[n].Name, studentList[n].Age });             //linq的写法             //var students = from n in intArray             //              select new {Id = n, studentList[n].Name, studentList[n].Age};             foreach (var student in students)             {                 Console.WriteLine(string.Format(" <div class='result'>id:{0}; name:{1}; age:{2} </div>", student.Id, student.Name, student.Age));             }         }         private static void SelectLambda()         {             Console.WriteLine(" <hr>select的Lambda表达式: <br>");             List <Student> studentList = GetStudents();             int[] intArray = { 3, 1, 6, 4 };             //lamb的写法             var stu = intArray.Select(i=>new { Id = i, studentList[i].Name });             //linq的写法             //var stu = from i in intArray             //          select new {Id = i, studentList[i].Name};             foreach (var student in stu)             {                 Console.WriteLine(string.Format(" <div class='result'>id:{0}; name:{1} </div>", student.Id, student.Name));             }         }         private static void ComplexSelect()         {             Console.WriteLine(" <hr>复合选择: <br>");             List <Student> studentList = GetStudents();             string[] stringArray = { "Ajax", "Csharp", "Javascript", "Css Desige", "Asp.net", "Gis" };             //lamb的写法             //var stu = stringArray.Where(s=>s.Length > 8).SelectMany(s=>studentList.Where(str1=>str1.Age > 23).Select(str=>new { book = s, name = str.Name }));             var stu = studentList.Where(sl=>sl.Age > 23).SelectMany(sl=>stringArray.Where(s=>s.Length > 8).Select(s=>new { name = sl.Name, book = s }));             //linq的写法             //var stu = from sl in studentList             //          where sl.Age > 23             //          from s in stringArray             //          where s.Length > 8             //          select new {name = sl.Name, book = s};             foreach (var student in stu)             {                 Console.WriteLine(string.Format(" <div class='result'>{0} is studying {1} </div>", student.name, student.book));             }         }         private static void ComplexSelectLambda()         {             Console.WriteLine(" <hr>多重选择的Lambda表达式: <br>");             List <Student> studentList = GetStudents();             string[] stringArray = { "Ajax", "Csharp", "Javascript", "Css Desige", "Asp.net", "Gis" };             //lamb的写法             //var stu = studentList.SelectMany(s=>stringArray.Select(str => s.Name + "has a book names " + str));             //linq的写法             var stu = from sl in studentList                                          from s in stringArray                                            select new {name=sl.Name,language=s};             foreach (var s in stu)             {                 Console.WriteLine(string.Format(" <div class='result'>{0} </div>", s));             }         }     }     sealed class Student     {         public int age;         public int Age         {             get { return age; }             set { age = value; }         }         private string name;         public string Name         {             get { return name; }             set { name = value; }         }         private string language;         public string Language         {             get { return language; }             set { language = value; }         }     }

 

 

文章转载自:         Linq中select查询        http://www.studyofnet.com/news/270.html

 

0 0
原创粉丝点击