Thứ Tư, 2 tháng 10, 2019

Linq trong C#

static void LinqDemo()
        {
            string sentence = "the quick brown fox jumps over the lazy dog";
            string[] list = sentence.Split(' ');

            //------------- Sorting data-----------------------------
            //Sắp xếp tăng dần với cả 2 điều kiện lọc:
            List<string> queryTangDan = list.OrderBy(o => o.Length).ThenBy(o => o.Substring(0, 1)).Select(o => o.ToUpper()).ToList();
            //Sắp xếp giảm dần với cả 2 điều kiện lọc, sử dụng đảo ngược Reverse():
            List<string> queryGiamDanBangDaoNguoc = list.OrderBy(o => o.Length).ThenBy(o => o.Substring(0, 1)).Select(o => o.ToUpper()).Reverse().ToList();

            //Sắp xếp giảm dần với cả 2 điều kiện lọc:
            List<string> queryGiamDan = list.OrderByDescending(o => o.Length).ThenByDescending(o => o.Substring(0, 1)).Select(o => o.ToUpper()).ToList();

            //------------- Set data-----------------------------
            //Loại bỏ phần tử trùng
            List<string> queryLoaiBoTrung = list.Distinct().ToList();

            //Hiệu của 2 tập hợp: phần tử A không có trong B
            List<string> lstB = new List<string>() { "quick", "brown", "dog", "cat" };
            List<string> queryHieu = list.Except(lstB).ToList();

            //Giao của 2 tập hợp: có cả trong A và B
            List<string> queryGiao = list.Intersect(lstB).ToList();

            //Hợp của 2 tập hợp: có trong A hoặc B
            List<string> queryHop = list.Union(lstB).ToList();

            //------------- Filtering Data-----------------------------
            //Lọc theo điều kiện: độ dài chuỗi bằng 4
            List<string> queryFilter = list.Where(o => o.Length == 4).ToList();

            //Lọc theo kiểu dữ liệu
            object[] objs = new object[] { "12345", 12 };
            List<string> queryFilterType = objs.OfType<string>().ToList(); //return { "12345" }


            //------------- Quantifier Operations-----------------------------
            List<Student> students = new List<Student>();
            students.Add(new Student { ID = 1, Name = "Asutosh", Age = 19 });
            students.Add(new Student { ID = 2, Name = "Kapil", Age = 20 });
            students.Add(new Student { ID = 3, Name = "Sumit", Age = 21 });

            Student newStudent = new Student { ID = 3, Name = "Anil", Age = 22 };
            students.Add(newStudent);

            //Điều kiện Tất cả SV đều lớn hơn 20 tuổi
            bool isAllOver20 = students.All(student => student.Age > 20);

            //Điều kiện tồn tại SV lớn hơn 20 tuổi
            bool isAnyOver20 = students.Any(student => student.Age > 20);

            //Điều kiện chứa SV - cùng 1 đối tượng
            bool isContain = students.Contains(newStudent);


            Console.WriteLine(isContain);

            foreach (string str in queryFilterType)
                Console.WriteLine(str);

        }

Không có nhận xét nào:

Đăng nhận xét