方式一: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. UI界面测试

    概念:指测试用户界面的风格是否满足用户要求.文字是否正确.页面是否美观.文字与图片组合是否完美.操作是否友好等. 1.窗体测试 { 窗体大小. 移动窗体. 缩放窗体. 显示分辨率. 状态栏. 工具栏. ...

  2. 使用Apache,压力测试redisson的一般高并发

    安装 Linux linux直接yum -y install httpd-tools,然后ab -V测试 Windows 1查看80端口有没有被占用,netstat -ano | findstr &q ...

  3. Windows命令行更改有线本地连接IP地址及DNS的bat脚本

    有些场景需要测试网络通不通等,每次打开网络和共享中心真烦,win10右下角还进不去了,shit! 运行ncpa.cpl也打开那个界面也是费劲吧啦,索性写个bat吧!为啥要写?还不是因为懒!可以把脚本复 ...

  4. Scapy 从入门到放弃

    0x00 前言 最近闲的没事,抽空了解下地表最强的嗅探和收发包的工具:scapy.scapy是一个python模块,使用简单,并且能灵活地构造各种数据包,是进行网络安全审计的好帮手. 0x01 安装 ...

  5. javascript 数组和对象的浅复制和深度复制 assign/slice/concat/JSON.parse(JSON.stringify())

    javascript 数组和对象的浅度复制和深度复制在平常我们用 ‘=’来用一个变量引用一个数组或对象,这里是‘引用’而不是复制下面我们看一个例子引用和复制是什么概念 var arr=[1,2,3,' ...

  6. Vue双向数据绑定简易实现

    一.vue中的双向数据绑定主要使用到了Object.defineProperty(新版的使用Proxy实现的)对Model层的数据进行getter和setter进行劫持,修改Model层数据的时候,在 ...

  7. Spring + Atomikos 分布式事务实现方式

    不同的数据库一定要分包建立 引用:http://blog.csdn.net/benluobobo/article/details/49818017 http://blog.csdn.net/yds49 ...

  8. layui监听radio点击事件

    layui.form.on('radio(layui_dataType)', function(data){ console.log(data.elem); //得到radio原始DOM对象 cons ...

  9. 记:联调安卓设备的神药-无需usb数据线即可直连

    前言 最近需要调试公司的安卓服务,正常情况下,我们调试都是减安卓设备通过usb连接在我们座位旁,再不济就是我们扛笔记本到硬件旁边,这样调试屡试不爽,但是有一天你突然发现你带的数据线因为各种原因总是终端 ...

  10. 1、4 前后端分离,写静态HTML文件,通过ajax 返回数据

    1.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...