c# List+Ling的那些常用操作

2022-10-13 15:47:18 浏览数 (1)

C#里List Ling可以说是最常用的基本功能,但最近看了一下其他团队成员写的程序;哎,发现还有很大的提升空间。那好吧,我们就说一下List Ling能玩出什么的效果。。

说List,当然先定义一个List的类

代码语言:javascript复制
 public class student {
            /// <summary>  
            /// 姓名  
            /// </summary>  
            public string name;
            /// <summary>  
            /// 科目  
            /// </summary>  
            public string subject;
            /// <summary>  
            /// 分数  
            /// </summary>  
            public int score;
}

定义一个student的类,主体里面包含有4个成员:name,subject,score。除了score为数值型外,其余为字符型。

好了这个类建立了,那就通过这个类建立List了。。

代码语言:javascript复制
  var student1 = new List<student>();
      student1.Add(new student() { name = "张三", subject = "英语", score = 89 });
      student1.Add(new student() { name = "李四", subject = "英语", score = 95 });
      student1.Add(new student() { name = "王五", subject = "英语", score = 69 });
      student1.Add(new student() { name = "李倩", subject = "英语", score = 99 });

 var student2 = new List<student>();
     student2.Add(new student() { name = "李四", subject = "英语", score = 95 });
     student2.Add(new student() { name = "王五", subject = "数学", score = 69 });
     student2.Add(new student() { name = "赵六", subject = "数学", score = 100 });

好,建立了2个List基本元素搞掂,就到重要操作了。这里Distinct()去重不细说了,反正简单。那我们就说一下下面的应用。

代码语言:javascript复制
var exp1 = student1.Where(a => student2.Exists(t => a.name.Contains(t.name))).ToList();
 StringBuilder Txt=new StringBuilder();
 Txt.Append("查找student1和student2总同时存在的数据nr");
 foreach (var item in exp1)
 {
       Txt.AppendFormat("{0} t {1} t {2} nr", item.name, item.subject, item.score);
 }

上面就是查询出student1中包含student2的name,即是2条List姓名相同的记录。

下面则是查询出student1中不包含student2的name,即是2条List姓名不相同的记录。

代码语言:javascript复制
 var exp2 = student1.Where(a => !student2.Exists(t => a.name.Contains(t.name))).ToList();
            Txt.Append("查找student1集合中存在,而student2不存在的数据nr");
            foreach (var item in exp2)
            {                
                Txt.AppendFormat("{0} t {1} t {2}  nr", item.name, item.subject, item.score);
            }

除了这些,还可以怎么?自己看吧,就不多说了,也挺容易理解的。。

代码语言:javascript复制
 var student3 = new List<student>();            
     student3 = student1.Except(student2).ToList();//差集
     Txt.Append("差集nr");
     foreach (var item in student3)
     {
       Txt.AppendFormat("{0} t {1} t {2}  nr", item.name, item.subject, item.score);
     }

     student3 = student1.Union(student2).ToList();//差集
     Txt.Append("并集nr");
     foreach (var item in student3)
     {
       Txt.AppendFormat("{0} t {1} t {2}  nr", item.name, item.subject, item.score);
     }
     student3 = student1.Intersect(student2).ToList();//差集
     Txt.Append("交集nr");
     foreach (var item in student3)
     {
       Txt.AppendFormat("{0} t {1} t {2}  nr", item.name, item.subject, item.score);
     }

最后结案吧,C#里面的LIST是很重要的,还有Ilist也是非常好用的,配合Ling的应用可以减少数据库的负担和加速程序的运行。。好吧,这次到这里。

c#

0 人点赞