从一个集合中过滤另一个集合中存在的项(类似in)

直接贴代码出来:

List<PriceMark> list = PriceMarkDAL.m_PriceMarkDAL.GetList("Erp_ProName=‘TLC7528CDWR‘");
ZWCUSTORDERClient pri = new ZWCUSTORDERClient();
ZwjgA610Konm[] Prices = new ZwjgA610Konm[11];
byte b = pri.ZWsPrice("TLC7528CDWR", ref Prices);

List<ZwjgA610Konm> PriList = Prices.ToList();
IEnumerable<ZwjgA610Konm> query = from t in PriList where list.Any(r => t.Kstbm == r.Grade) select t;
List<ZwjgA610Konm> kk = query.ToList();

以上代码贴出来不方便观察的话,下面是直接从VS中截图出来的,方便查看

这样查看一目了然啊,大致意思是这样的,List<PriceMark> list存放的是型号TLC7528CDWR要显示的价位档,从本地数据表中读取,取出来有要显示1、100、1000

ZwjgA610Konm[] Prices 是从SAP中取出来的型号TLC7528CDWR的所有价位档,我这里是通过WebService取出来的,所以才会搞出这么麻烦的事来,要是都是本地读多好,也不用这么蛋疼了。。。取出来的会包括1、25、50、100.....3000等很多价位档

下面两行就是从集合Prices中取出包含在list集合中的价位档,也就是从中取出1、100、1000三个价位档来,最后得到一个只包含1、100、1000三个价位档的新的集合List<ZwjgA610Konm> kk,结构不变,跟Prices结构一样

IEnumerable<ZwjgA610Konm> query = from t in PriList where list.Any(r => t.Kstbm == r.Grade) select t;

List<ZwjgA610Konm> kk = query.ToList();

下面是真实的网站显示效果(价格显示了三档)

以上方法是为了避免写出两个集合循环比较的代码(一个内循环,一个外循环,本人认为这种方法不是一个优秀程序员应该做的事),当然了,如果只取出一个价位档的话就不需要这么麻烦了,直接按下面的方法就行了

List<ZwjgA610Konm> kk = PriList.FindAll(c => c.Kstbm == 100);

或者

List<ZwjgA610Konm> kk = PriList.FindAll(delegate(ZwjgA610Konm c) { return c.Kstbm == 100; });

一样的效果,上面是lamda表达式的简写,可以省很多代码。

本人出自 “海角之上” 博客,转载请注明出处:http://www.cnblogs.com/sky6699/p/5266727.html

时间: 2024-12-20 21:59:47

从一个集合中过滤另一个集合中存在的项(类似in)的相关文章

iOS中过滤html文档中的标签

在iOS项目开发中,有时候我们需要加载一段html文档,但又不能显示出文档中的标签,比如</a>,<a href=........>等这样的标签 这时我们可以用到如下方法来去除文档中的标签而只加载文本 -(NSString *)flattenHTML:(NSString *)str{ NSScanner *theScanner; NSString *text = nil; theScanner = [NSScanner scannerWithString:str]; while (

《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 &amp;&amp; 检查一个字符串是文本还是二进制

过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: import string allchars = string.maketrans('','') #all chars table def makefilter(keep): delchars = allchars.translate(allchars,keep) def thefilter(s): retu

一个简单的Java集合范围过滤的多个方式对比

在一个项目里面有这么一个技术需求: 1.集合中元素个数,10M 2.根据上限和下限从一个Set中过滤出满足要求的元素集合. 实际这个是个很典型的技术要求, 之前的项目也遇见过,但是因为当时的类库不多, 都是直接手写实现的. 方式基本等同于第一个方式. 在这个过程中, 我写了四个方式, 基本记录到下面. 第一个方式:对Set进行迭代器遍历, 判断每个元素是否都在上限和下限范围中.如果满足则添加到结果集合中, 最后返回结果集合.             测试效果:集合大小100K, 运算时间 300

java集合TreeMap应用---求一个字符串中,每一个字母出现的次数

package cn.itcast.p1.map.test; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class TestMap { /** * 练习: * "fdgavcbsacdfs+++AA&&BBB" 获取该字符串中,每一个字母出现的次数. * 要求打印结果是:a(2)b(1)...; * 思路: * 对于结果的分析发现,字母和次数之间存在

[ jquery 文档处理 prependTo(content) ] 此方法用于把所有匹配的元素前置到另一个、指定的元素元素集合中

把所有匹配的元素前置到另一个.指定的元素元素集合中 实际上,使用这个方法是颠倒了常规的$(A).prepend(B)的操作,即不是把B前置到A中,而是把A前置到B中 在jQuery 1.3.2中,appendTo, prependTo, insertBefore, insertAfter, 和 replaceAll这个几个方法成为一个破坏性操作,要选择先前选中的元素,需要使用end()方法,参见 appendTo 方法的例二 实例: <html lang='zh-cn'> <head&g

请写一个算法,用于将list集合内重复元素剔除

package Homework; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/** * list集合是否可以包含重复元素? * 如果可以,请写一个算法,用于将list集合内重复元素剔除. * @author 张致远 * */public class Homework2 { public static void main(String[]

集合与IO的一个小联系

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ 集合与IO的一个小联系: Properties 是集合中的一员,他是hashtable的子类也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串 该类最主要的操作是用于操作配置文件的这里只简单说一下它和IO技术的联系: 查阅API

[ jquery 文档处理 insertAfter(content) after(content|fn) ] 此方法用于把所有匹配的元素插入到另一个、指定的元素元素集合的后面,实现外部插入

after(content | fn):在每个匹配的元素之后插入内容 insertAfter(content): 把所有匹配的元素插入到另一个.指定的元素元素集合的后面 实际上,使用这个方法是颠倒了常规的$(A).after(B)的操作,即不是把B插入到A后面,而是把A插入到B后面 在jQuery 1.3.2中,appendTo, prependTo, insertBefore, insertAfter, 和 replaceAll这个几个方法成为一个破坏性操作,要选择先前选中的元素,需要使用en

给出一个set的字符和一个正数k,求所有由这个set能组成长度为k的字符串集合 print-all-combinations-of-given-length

// 给出一个set的字符和一个正数k,求所有由这个set能组成长度为k的字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba abb baa bab bba bbb Input: set[] = {'a', 'b', 'c', 'd'}, k = 1 Output: a b c d package recursion; import java.util.ArrayList; public class N_sets_form_