方式一: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. 使用PHP实现命令模式(转)

    <?php /** * 命令模式 2010-08-21 sz * @author phppan.p#gmail.com http://www.phppan.com * 哥学社成员(http:// ...

  2. C#6.0-8.0新功能、ValueTuple

    C# 6.0: https://www.cnblogs.com/yinrq/p/5600530.html C# 7.0: https://www.cnblogs.com/cncc/p/7698543. ...

  3. halcon学习_字符识别1

    实例图片 大体步骤:1.读取图片                   2.图像预处理(阈值分割,提取标签部分,缩小处理区域)                  3.将标签区域的最小外接矩形,从原图中剪 ...

  4. java基本思想

    面向对象 众所周知,面向对象编程思想是java的基本思想.java的整个体系和技术实现都是以这个思想为基础.(这个通过类和接口能看出来,后面提到) 对这个事情的认知度甚至变成了很多公司的面试标准.比如 ...

  5. js 实现数字格式化(货币格式)几种方法

    // 方法一 function toThousands(num) { var result = [ ], counter = 0; num = (num || 0).toString().split( ...

  6. kolla安装Queens版本OpenStack(ceph后端)

    OpenStack all-in-one部署: 本次部署为OpenStack Queens版本部署,使用All-in-one,单节点部署. 物理资源:8核,32GB,硬盘400GB(3个盘),2网卡. ...

  7. Redis 常用命令学四:集合类型命令

    1.增加和删除命令 127.0.0.1:6379> SADD st a (integer) 1 127.0.0.1:6379> SADD st r f g (integer) 3 127. ...

  8. 20190621-N皇后

    N皇后 难度分类 困难 题目描述 n皇后问题研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n  ...

  9. zabbix硬件监控以及服务

    大家好今天给大家带来zabbix3.4.8监控主机,那么最近由于我个人的关系.没有及时的更新文章所以,很抱歉那么今天我分享的内容是zabbix3.4.8监控服务器.本章的具体监控服务器如下: 服务器的 ...

  10. linux上启动tomcat报错:Failed to read schema document 'http://www.springframework.org/schema/data/mongo/spring-mongo-2.0.xsd

    本文原文连接: http://blog.csdn.net/bluishglc/article/details/7596118 ,转载请注明出处! spring在加载xsd文件时总是先试图在本地查找xs ...