首页 > 其他分享 >linq lambda 两个list求交集:根据每一项模糊匹配(contains) 并且带出where过滤条件里的值

linq lambda 两个list求交集:根据每一项模糊匹配(contains) 并且带出where过滤条件里的值

时间:2023-07-25 13:22:32浏览次数:49  
标签:index apple list str1 contains list1 linq list2 List

直接使用 var result = list1.Where(str1 => list2.Contains(str))是不行的,这个要求两个list的string值必须有相等的才行 例如list1中有apple,那么list2中必须有apple才能匹配,而list2中只有app所以匹配不了

 

解决办法:

List<string> list1 = new List<string> { "apple", "banana", "orange" };
            List<string> list2 = new List<string> { "app", "ban", "ora" ,"test"};

            var result = list1.Where(str1 => list2.Any(str2 => str1.Contains(str2))).Select((x,index)=>new { x,l2=list2[index]}).ToList();

 

这里select使用了带index的重载,从而根据index取where条件里list2中与之对应的值(仅适用于:list1和list2中时1:1的关系,如果是1:N则会错位导致错误,如下图)

 

标签:index,apple,list,str1,contains,list1,linq,list2,List
From: https://www.cnblogs.com/xuejianxiyang/p/17579650.html

相关文章

  • CMake Error at CMakeLists.txt: No CMAKE_CXX_COMPILER could be found.
    系统环境:Ubuntu22.04.11.问题发生--TheCcompileridentificationisGNU11.3.0--TheCXXcompileridentificationisunknown--DetectingCcompilerABIinfo--DetectingCcompilerABIinfo-done--CheckforworkingCcompiler:/usr/bin/cc-skipped--......
  • list agg cause ORA-06502 PL/SQL: numeric or value error
    http://www.idb-stock.net/idb/2011/07/05/204.htmlora-06502错误主要是指数据字或值错误,包括以下子类型:字符到数据值的转换错误、字符串缓冲区太小、数值精度太高等。对空集合的调用,会报ora-06502错误declaretypecnt_typistableofnumberindexbybinary_integer;v_c......
  • android开发 - ListView
    android中很多应用都是用ListView来显示数据就像系统中的设置里面,每一行,就是构成的ListViewprivateListViewlistview;privatePersonServiceperson;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstan......
  • 用Java集合中的Collections.sort方法对list排序的两种方法
    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下:   <strong>/**02 *根据order对User排序03 */04 publicclassUserimplementsComparable{05 privateStringname;06 privateIntegerorder;07 publicStringgetN......
  • 数组(Array)和链表(List)
    推荐https://cloud.tencent.com/developer/article/2304343引言在Java编程中,数组(Array)和链表(List)是常用的数据结构,用于在内存中存储和组织数据。两者都有各自的特点和适用场景,本文将深入比较数组与链表的区别,并结合代码示例进行详细解释。数组(Array)定义和特点数组是一种固定......
  • ValueNotifier<T> ValueListenableBuilder<T> Stack() positioned.fill()
     1、在Column下面增加可以滚动的Row2、在widget外部控件其内部的变量ValueNotifier<T> ValueListenableBuilder<T>(valueListenable:...,builder:()=>)  import'package:flutter/material.dart';classSettingsPageextendsStatelessWidget{finalint_cou......
  • vue项目使用vue-virtual-scroll-list虚拟滚动超多千万条数据 cv可用案例
    当我们有大量数据需要显示在列表中时,传统的滚动列表会将所有数据渲染到DOM中,导致性能下降和内存占用增加。虚拟滚动列表通过仅渲染当前视窗内可见的一小部分数据,动态地根据滚动位置更新列表内容,从而实现更高效的列表渲染。vue-virtual-scroll-list是一个用于Vue.js的虚拟滚动......
  • Python list里面定义自定义类型
    PythonList中定义自定义类型在Python中,List(列表)是一种非常常见且强大的数据结构。它允许我们以有序的方式存储和访问多个元素。在List中,我们可以存储各种类型的数据,包括整数、浮点数、字符串等。但是,Python的灵活性还允许我们在List中存储自定义的数据类型,从而提供更高的灵活性和......
  • android layer-list bitmap
    AndroidLayer-ListBitmap实现步骤整体流程概述为了实现AndroidLayer-ListBitmap,我们需要按照以下步骤进行操作:步骤操作1创建一个XML文件来定义Layer-List2在XML文件中添加每个图层的属性和位置3创建一个Bitmap对象并将其绘制到Canvas上4将......
  • redis 查看list 长度
    Redis查看List长度在使用Redis时,我们经常会使用List数据结构来存储和操作一系列的元素。Redis的List是一个有序的、可重复的数据结构,它可以用于实现队列(Queue)和栈(Stack)等数据结构。在某些场景下,我们可能需要查看List中元素的数量,本文将介绍如何使用Redis命令来查看List的长度。Re......