第一个Linq练习

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Xml;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            第一个例子入门例子
            // 1. Data source.
            int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

            // 2. Query creation.
            // numQuery is an IEnumerable<int>
            var nums =
                from num in numbers
                where (num % 2) == 0
                select num;

            // 3. Query execution.
            foreach (int num in nums)
            {
                Console.Write("{0,1} ", num);
            }

            Console.Write("{0,1} ", nums.First());


            Console.ReadLine();

            简单范型结构

            int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

            List<int> ints =
                (from num in numbers
                where (num % 2) == 0
                select num).ToList();

            //var numQuery3 = (from num in numbers where (num % 2) == 0 select num).ToArray();

            foreach (int i in ints)
            {
                Console.WriteLine(i);
            }


            Console.ReadLine();


            对象范型结构


            List<employee> employees = new List<employee>();

            employees.Add(new employee("张三", 16));
            employees.Add(new employee("张四", 17));
            employees.Add(new employee("张五", 18));
            employees.Add(new employee("张六", 19));
            employees.Add(new employee("李四", 16));
            employees.Add(new employee("王五", 16));

            //另一种写法
            //List<employee> customerQuery =
            //    (from age16 in employees
            //     where age16.Age == 16
            //     select age16).ToList();

            IEnumerable<employee> customerQuery =
                from age16 in employees
                 where age16.Age == 16
                 select age16;


            foreach (employee mye in customerQuery)
            {
                Console.WriteLine(mye.Name+mye.Age);  
            }

            Console.ReadLine();

            合并的例子
            List<Student> students = new List<Student>()
            {
                new Student { First = "Svetlana", Last = "Omelchenko", ID = 111, Street = "123 Main Street", City = "Seattle", Scores = new List<int> { 97, 92, 81, 60 } },
                new Student { First = "Claire", Last = "O’Donnell", ID = 112, Street = "124 Main Street", City = "Seattle", Scores = new List<int> { 75, 84, 91, 39 } },
                new Student { First = "Sven", Last = "Mortensen", ID = 113, Street = "125 Main Street", City = "Lake City", Scores = new List<int> { 88, 94, 65, 91 } }, };      
            // Create the second data source.
            List<Teacher> teachers = new List<Teacher>()      
            {                           
                new Teacher {First="Ann", Last="Beebe", ID=945, City = "Seattle"},          
                new Teacher {First="Alex", Last="Robinson", ID=956, City = "Redmond"},           
                new Teacher {First="Michiyo", Last="Sato", ID=972, City = "Tacoma"}        };       
            // Create the query.       
            var peopleInSeattle =
                (from student in students
                 where student.City == "Seattle"
                 select new { fn=student.First, ln=student.Last }).Concat(from teacher in teachers
                                                                    where teacher.City == "Seattle"
                                                                    select new { fn=teacher.First, ln=teacher.Last });
            Console.WriteLine("The following students and teachers live in Seattle:");      
            // Execute the query.       
            foreach (var person in peopleInSeattle)       
            {          
                Console.WriteLine(person);       
            }  
            Console.WriteLine("Press any key to exit.");       
            Console.ReadKey();   


            元素操作
             Data source.       
            double[] radii = { 1, 2, 3 };       
             Query.       
            IEnumerable<string> query =           
                from rad in radii           
                select String.Format("Area = {0}", (rad * rad) * 3.14);       
             Query execution.        
            foreach (string s in query)           
                Console.WriteLine(s);       
             Keep the console open in debug mode.       
            Console.WriteLine("Press any key to exit.");       
            Console.ReadKey();

            对象toXML
            // Create the data source by using a collection initializer.      
            List<Student> students = new List<Student>()       
            {           
                new Student {First="Svetlana", Last="Omelchenko", ID=111, Scores = new List<int>{97, 92, 81, 60}},           
                new Student {First="Claire", Last="O’Donnell", ID=112, Scores = new List<int>{75, 84, 91, 39}},          
                new Student {First="Sven", Last="Mortensen", ID=113, Scores = new List<int>{88, 94, 65, 91}},      
            };       
           
            // Create the query.       
            var studentsToXML = new XElement("Root",          
                from student in students           
                let x = String.Format("{0},{1},{2},{3}", student.Scores[0],student.Scores[1],student.Scores[2], student.Scores[3])          
                select new XElement("student",                      
                    new XElement("First", student.First),                     
                    new XElement("Last", student.Last),                     
                    new XElement("Scores", x)                  
                    )
                    // end "student"               
                    );
                    // end "Root"      
                    // Execute the query.      
            Console.WriteLine(studentsToXML);

            // Keep the console open in debug mode.      
            Console.WriteLine("Press any key to exit.");       
            Console.ReadKey();   
        }
    }

    public class employee
    {

        public string Name
        {
            get;
            set;
        }

        public int Age
        {
            get;
            set;
        }

        public employee(string name,int age)
        {
            Name = name;
            Age = age;
        }
    }

    class Student
    {
        public string First { get; set; }
        public string Last { get; set; }
        public int ID { get; set; }
        public string Street { get; set; }
        public string City { get; set; }
        public List<int> Scores;}

    class Teacher
    {
        public string First { get; set; }
        public string Last { get; set; }
        public int ID { get; set; }
        public string City { get; set; }
    }
}

posted @ 2008-12-24 17:13  昕友软件开发  阅读(212)  评论(0编辑  收藏  举报
欢迎访问我的开源项目:xyIM企业即时通讯