zoukankan      html  css  js  c++  java
  • C#中两个List<TModel>中根据指定条件--判断并获取不同数据的数据集合2

    方式一:Linq

    List<Test> list = new List<Test>();
                list.Add(new Test { score = 10, name = "张君宝" });
                list.Add(new Test { score = 20, name = "刘惜君" });
                list.Add(new Test { score = 20, name = "刘惜君" });
                list.Add(new Test { score = 30, name = "八戒" });
    
                int total = (from temp in list
                             where temp.name == "刘惜君"
                             select temp.age).Count();
    
                int score = (from temp in list
                             where temp.name == "刘惜君"
                             select temp.score).Sum();
                this.textBox1.Text = "刘惜君:" + total + "人" + score + "score";
    

    C#中两个List<TModel>中根据指定条件获取不同对象 续

    原始需求:已经插入的数据不再重复插入(所有数据中排除已有数据,不存在数据以新对象形式存储在对象三中)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    
    namespace StartExe
    {
        public partial class Form1 : Form
        {
            private List<Test> AllData = new List<Test>();
            private List<Test> PartData = new List<Test>();
            public Form1()
            {
                InitializeComponent();
    
                AllData.Add(new Test { score = 10, name = "001" });
                AllData.Add(new Test { score = 20, name = "002" });
                AllData.Add(new Test { score = 30, name = "003" });
                AllData.Add(new Test { score = 40, name = "004" });
    
                PartData.Add(new Test { score = 30, name = "003" });
                PartData.Add(new Test { score = 40, name = "004" });
            }
    
            //方法:Linq
            private void btnLinq_Click(object sender, EventArgs e)
            {
                LinqMethod(AllData, PartData);
            }
    
            private void LinqMethod(List<Test> allData, List<Test> partData)
            {
                var query = from a in allData.AsEnumerable()
                            join p in partData.AsEnumerable()
                            on a.score equals p.score into tmp
                            from current in tmp.DefaultIfEmpty()
                            where current == null
                            select new
                            {
                                Name = a.name,
                                SCORE = a.score,
                            };
    
                string str = string.Empty;
                foreach (var item in query)
                {
                    str += item.SCORE + "==" + item.Name + "
    ";
                }
    
                this.txtLinq.Text = "linq方式:
    " + str + query.Count().ToString();
                //MessageBox.Show(str);
            }
    
            //方法:Lambda
            private void btnLambda_Click(object sender, EventArgs e)
            {
                LambdaMethod(AllData, PartData);
            }
    
            private void LambdaMethod(List<Test> AllData, List<Test> PartData)
            {
                var query = AllData.AsEnumerable()
                    .GroupJoin
                    (
                        PartData.AsEnumerable(),
                         x => x.score, y => y.score, (x, y) => y.DefaultIfEmpty()
                            .Where(w => w == null).
                            Select(z => new { SCORE = x.score, Name = x.name })
                     ).SelectMany(x => x);
    
                string str = string.Empty;
                foreach (var item in query)
                {
                    str += item.SCORE + "==" + item.Name + "
    ";
                }
    
                this.txtLambda.Text = "lambda方式:
    " + str + query.Count().ToString();
                //MessageBox.Show(str);
            }
        }
    
        public class Test
        {
            public int age { get; set; }
            public string name { get; set; }
            public int score { get; set; }
        }
    }
    

    运行效果如下所示:

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/YYkun/p/11649125.html
Copyright © 2011-2022 走看看