方式一: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 + "\r\n";
} this.txtLinq.Text = "linq方式:\r\n" + 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 + "\r\n";
} this.txtLambda.Text = "lambda方式:\r\n" + 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; }
}
}

运行效果如下所示:

C#中两个List<TModel>中根据指定条件--判断并获取不同数据的数据集合2的更多相关文章

  1. php 中两种获得数据库中 数据条数的方法

    一种是传统的利用mysql_num_rows()来计算 $sql="select * from news"; $res=mysql_query($sql); $number=mys ...

  2. oracle中两个服务器连接中sys密码修改问题

    问题描述:orcl服务器要连接orclstd 想要sqlplus sys/410526@orclstd as sysdba 连接orclstd数据库,但是发现啥意思密码不对,就对sys密码进行重新设置 ...

  3. java中activiti框架中的排他网关使用方法,多条件判断

    当排他网关的判断条件中出现多个条件时,需要注意,设置判断条件时,可能遇到,流向相同的任务,而判断条件的变量个数不同 那么,必须在后面的运行任务时,将所有的涉及到的变量都设置进任务中,只不过,如果这个任 ...

  4. zeromq中两个dealer 通过一个router进行通信

    发现有童鞋不是很清楚ZMQ中的“请求-回复”模式中的ROUTER怎么用,所以简单介绍一下“请求-回复”模式的使用(最后付代码). 一.讲一讲 1.要使用zmq 通过一个router进行通信,你首先需要 ...

  5. jsp中两种include的区别【转】

    引用文章:http://www.ibm.com/developerworks/cn/java/j-jsp04293/ http://www.cnblogs.com/lazycoding/archive ...

  6. sql一个表中两个字段合并求和

    sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total  from TABLE

  7. C语言中两位ASCII码可以表示汉字

    最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ...

  8. (转)C#中两个问号和一个问号 ??

    小问题难倒很多人.今天发现了这个问题,搜了很长时间才看到记录下. 实例:dt.Columns.Add(firstRow.GetCell(i).StringCellValue ?? string.For ...

  9. mysql源码:关于innodb中两次写的探索

    两次写可以说是在Innodb中很独特的一个功能点,而关于它的说明或者解释非常少,至于它存在的原因更没有多少文章来说,所以我打算专门对它做一次说明. 首先说明一下为什么会有两次写这个东西:因为innod ...

随机推荐

  1. 第三方框架----FMDB的使用

    以下是SQLite API进行封装的库FMDB的简单使用 : FMDB框架的下载地址 :https://github.com/ccgus/fmdb 代码如下 : ////  ViewControlle ...

  2. ant design Table合并单元格合并单元格怎么用?

    1.ant design table合并单元格怎么用?

  3. ES SQL使用说明文档

    ES SQL使用说明文档 一.Elasticsearch术语介绍 l  接近实时(NRT): Elasticsearch 是一个接近实时的搜索平台.这意味着,从索引一个文档直到这个文档能够被搜索到有一 ...

  4. 迷惑性很强的crontab

      提到定时任务,我们通常会想起linux的crontab,可以说服务器端大部分定时任务都是由它完成的.这东西固然耗用,但是坑也不少.   这不,昨天我在部署一个备份任务的时候,就不幸踩坑了.差点酿成 ...

  5. 《Tsinghua os mooc》第15~16讲 处理机调度

    第十五讲 处理机调度 进程调度时机 非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况: 进程从运行状态切换到等待状态 进程被终结了 可抢占系统中,中断请求被服务例程响应完成时发生调度,也分 ...

  6. [LuoguP1155]双栈排序_二分图_bfs

    双栈排序 题目链接:https://www.luogu.org/problem/P1155 数据范围:略. 题解: 神仙题. 就第一步就够劝退了. 这个二分图非常不容易,首先只有两个栈,不是属于一个就 ...

  7. PS错误1

    PS错误1 提示要卸载.不用卸载直接安装即可.还保留了之前的设置. 在安装目录下看看有没有安装PS的exe程序.可能有.

  8. 去掉右键Open Folderas Intellij IDEA Project

    解决: WIN+R键打开运行,输入regedit 打开注册表 在地址栏输入: 计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell 然 ...

  9. diy操作系统 附录:常用命令

    ld -m elf_i386 as --32 gcc -m 16 o

  10. S03_CH07_AXI_VDMA_OV5640摄像头采集系统

    S03_CH07_AXI_VDMA_OV5640摄像头采集系统 7.1概述 本章内容和<S03_CH06_AXI_VDMA_OV7725摄像头采集系统>只是摄像头采用的分辨率不同,其他原理 ...