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; }
        }
    }
    

    运行效果如下所示:

  • 相关阅读:

    第一次发贴,也是在看了首页吵架贴后有感,也给博客园提个提议
    【把玩信息图之标签云】看看我一年的邮件在扯什么
    VS发布Web时自动调用YUICompressor批量压缩JS、CSS
    用JavaScript实现自己的DOM选择器
    一键发布应用了seajs的asp.net项目
    在JavaScript中应用单例模式
    Qt 资料大全
    C#的不足(1):匿名类型的不足之处
    LINQ解析:LINQ to Objects简介
  • 原文地址:https://www.cnblogs.com/YYkun/p/11649125.html
Copyright © 2011-2022 走看看