.Net:再现List<T>:相关方法使用

         就这会儿有空,就把List的相关方法如何使用又看了一下,现把示例代码贴出来;希望可以为不大会用的客友们提供些帮助;没有写全;但大部分都有。尽量看吧!

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

namespace ConsoleLinq
{
    /// <summary>
    /// 用户
    /// </summary>
    public class User
    {
        public int UserId { get; set; }
        public string UserName { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
    }

    /// <summary>
    ///  新闻
    /// </summary>
    public class News
    {
        public int NewsId { get; set; }
        public string NewsTitle { get; set; }
        public int UserId { get; set; }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            //用户列表1
            List<User> userList1 = new List<User>();
            //userList1.Add(new User() { UserId = 1, UserName = "Kevin.Chen1", Sex = "male", Age = 10 });
            //userList1.Add(new User() { UserId = 2, UserName = "Kevin.Chen2", Sex = "male", Age = 20 });
            //userList1.Add(new User() { UserId = 3, UserName = "Kevin.Chen3", Sex = "female", Age = 30 });
            //userList1.Add(new User() { UserId = 4, UserName = "Kevin.Chen4", Sex = "male", Age = 40  });

            User User1 = new User() { UserId = 1, UserName = "Kevin.Chen1", Sex = "male", Age = 10 };
            User User2 = new User() { UserId = 2, UserName = "Kevin.Chen2", Sex = "male", Age = 20 };
            User User3 = new User() { UserId = 3, UserName = "Kevin.Chen3", Sex = "female", Age = 30 };
            User User4 = new User() { UserId = 4, UserName = "Kevin.Chen4", Sex = "male", Age = 40 };
            userList1.Add(User1);
            userList1.Add(User2);
            userList1.Add(User3);

            //新闻列表1
            List<News> newsList1 = new List<News>();
            newsList1.Add(new News() { NewsId = 1, NewsTitle = "NewsTitle1", UserId = 1 });
            newsList1.Add(new News() { NewsId = 2, NewsTitle = "NewsTitle2", UserId = 1 });
            newsList1.Add(new News() { NewsId = 3, NewsTitle = "NewsTitle3", UserId = 2 });
            newsList1.Add(new News() { NewsId = 4, NewsTitle = "NewsTitle4", UserId = 2 });
            newsList1.Add(new News() { NewsId = 5, NewsTitle = "NewsTitle5", UserId = 3 });
            newsList1.Add(new News() { NewsId = 6, NewsTitle = "NewsTitle6", UserId = 3 });
            newsList1.Add(new News() { NewsId = 7, NewsTitle = "NewsTitle7", UserId = 4 });
            newsList1.Add(new News() { NewsId = 8, NewsTitle = "NewsTitle8", UserId = 4 });


            //----------------SQL:相当Where条件查找------------------------------------------------
            
            //筛选年龄大于等于30的人:Where or FindAll(可以替换使用)
            var resultsList0 = userList1.Where(u => u.Age >= 30);
            var resultsList1 = userList1.FindAll(u => u.Age >= 30);

            var resultsList2 = userList1.Where(u => u.UserName.Contains("Kevin"));//相当于Like 通配符条件等
            var resultsList3 = userList1.Where(u => u.UserName.Substring(2).Contains("."));
            var resultsList4 = userList1.Where(u => u.UserName.StartsWith("Kevin"));
            var resultsList5 = userList1.Where(u => u.UserName.EndsWith("Chen2"));
            var resultsList6 = userList1.FindAll(u => u.Age >= 30 && u.Age <= 40);//多条件筛选,其它以此参照;


            //----------------SQL:相当于聚合函数相关操作--------------------------------------------
            //平均年龄
            double avgAge = userList1.Average(u => u.Age);
            //求和
            int sumAge = userList1.Sum(u => u.Age);
            //最大值
            int maxAge = userList1.Max(u => u.Age);
            //最小值
            int minAge = userList1.Min(u => u.Age);


            //----------------去重相关方法------------------------------------------------------------
            var newsResults = newsList1.Distinct();



            //----------------返回bool值的相关使用方法------------------------------------------------

            //用户列表中是否都是男的:All
            bool isAllMan = userList1.All(u => u.Sex == "male");

            //用户列表中是否存在男的:Exists or Any
            bool isExistMan1 = userList1.Any(u => u.Sex == "male");
            bool isExistMan2 = userList1.Exists(u => u.Sex == "male");


            //----------------如何在新闻列表中查找用户列表存在的用户发布的新闻呢?--------------------

            //FindAll and Exists
            var resultList1 = newsList1.FindAll(n => userList1.Exists(u => u.UserId == n.UserId));

            //FindAll and Any
            var resultList2 = newsList1.FindAll(n => userList1.Any(u => u.UserId == n.UserId));

            foreach (var item in resultList1)//resultList1 与 resultList2 结果是一样的
            {
                Console.WriteLine(item.NewsId + "," + item.NewsTitle + "," + item.UserId);
            }


            //----------------如何在新闻列表中查找不是用户列表存在的用户发布的新闻呢?-----------------
            //FindAll and All
            var resultList3 = newsList1.FindAll(n => userList1.All(u => u.UserId != n.UserId));

            Console.WriteLine();
            foreach (var item in resultList3)
            {
                Console.WriteLine(item.NewsId + "," + item.NewsTitle + "," + item.UserId);
            }


            //
            //用户列表2
            List<User> userList2 = new List<User>();
            //userList2.Add(new User() { UserId = 3, UserName = "Kevin.Chen3", Sex = "female", Age = 30 });
            //userList2.Add(new User() { UserId = 4, UserName = "Kevin.Chen4", Sex = "male", Age = 40 });

            userList2.Add(User3);
            userList2.Add(User4);

            //两个列表合集去重复:Union
            var rsltList1 = userList1.Union(userList2);
            Console.WriteLine("两个列表合集去重复:Union");
            foreach (var item in rsltList1)
            {
                Console.WriteLine(item.UserId + "," + item.UserName + "," + item.Age + "," + item.Sex);
            }

            //合并两个列表不去重复:Concat
            var rsltList2 = userList1.Concat(userList2);
            Console.WriteLine("合并两个列表不去重复:Concat");
            foreach (var item in rsltList2)
            {
                Console.WriteLine(item.UserId + "," + item.UserName + "," + item.Age + "," + item.Sex);
            }

            //找出两个列表相同的项目:Intersect
            var rsltList3 = userList1.Intersect(userList2);
            Console.WriteLine("找出两个列表相同的项目:Intersect");
            foreach (var item in rsltList3)
            {
                Console.WriteLine(item.UserId + "," + item.UserName + "," + item.Age + "," + item.Sex);
            }


            //找出两个列表不相同的项目:Except userList1相对于userList2
            var rsltList4 = userList1.Except(userList2);
            Console.WriteLine("找出两个列表不相同的项目:Except");
            foreach (var item in rsltList4)
            {
                Console.WriteLine(item.UserId + "," + item.UserName + "," + item.Age + "," + item.Sex);
            }




            Console.ReadLine();
        }
    }
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小壁虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值