linq+lambda+delegate,从list中查找到满足匹配条件的所有数据索引值

linq的扩展方法中有FindIndex,FindLastIndex两个方法可以查找满足条件的首个和最后一个数据的索引值,利用delegate将匹配条件的方法传入FindAllIndex,查找满足匹配条件的所有索引返回

        /// <summary>
        /// 返回list内所有满足where条件的元素的索引
        /// </summary>
        public static List<int> FindAllIndex<T>(this List<T> list, Func<T, bool> where)
        {
            List<int> indexs = new List<int>();
            if (list != null)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (where(list[i]))
                    {
                        indexs.Add(i);
                    }
                }
            }
            return indexs;
        }

测试:

        public void Test()
        {
            List<string> datas = new List<string>();
            datas.Add("格力");
            datas.Add("铁蛋儿");
            datas.Add("english");
            datas.Add("toyota");
            datas.Add("A");
            var indexs = datas.FindAllIndex(e => e.Length > 2);
            foreach (int i in indexs)
            {
                Console.WriteLine("索引:" + i + ";值:" + datas[i]);
            }
        }

时间: 2024-10-11 06:52:08

linq+lambda+delegate,从list中查找到满足匹配条件的所有数据索引值的相关文章

在Team Foundation Server中查找文件或代码

很多用户在使用TFS的过程中,都抱怨一个问题,不能在TFS的代码库中查找文件!虽然TFS的所有数据都存储在数据库中(SQL Server),但是由于代码文件存储的特殊性,你不能通过全文搜索的功能直接在数据库里查询.当前最新版本TFS 2013 update 4和TFS Online,也没法在界面上找到与代码有关的搜索功能. 但是通过调研,发现TFS代码库中的查询功能,有以下几中方法: 1. 利用TFS代码的命令行工具TF.exe查询代码库中文件 TFS代码的命令行工具TF.exe几乎可以完成在U

ASP.NET EF(LINQ/Lambda查询)

EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集 1 create database MyFirstEF 2 on primary 3 ( 4 name='MyFirstEF.mdf', 5 --修改为自己电脑上SQL DB路径 6 filename='E:\ProgramMSSQL

EF封装类 增加版,增加从缓存中查找数据方法,供参考!

这个类是抽象类,我这里增加了需要子类验证的方法ValidateEntity,方便扩展,若想直接使用该类,可以将该类更改成静态类,里面所有的方法都改成静态方法就可以直接调用了,可能有不足之处,欢迎大家在本文下面评论留言,共同完善,谢谢! using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Objects.DataClasses; using Z

LinQ Lambda表达式用作泛型活动

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.IO; namespace LambdaExpressionAction { class Program { static void Main(string[] args) { //Action:泛型委托,可以将行为捕获为一个可调用的对象 //只需要

Linq在Array,List,Dictionary中的应用

Linq在Array,List,Dictionary中的应用 今天在实际工作中需要对array,list,dictionary进行排序,试一试linq,发现非常好用,代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Text.RegularExpressions; 6 7 namespace Test 8 { 9 cl

Visual Studio 2013 无法使用:在文件中查找(Ctrl+Shift+F)

最近遇到一个问题就是在win7(32位.64位都试过)上安装Visual Studio 2013(专业版.旗舰版都试过)之后,打开项目,使用:在文件中查找(Ctrl+Shift+F)功能时,会突然奔溃. 后来,突然想到在安装的时候,右键,以管理员身份安装. 于是,尝试了一下,搞定!

从list中查找子list

member函数用法很奇怪,用一个元素到list中查找,如果找到,则将找到的元素和之后所有元素变成一个新的list返回,如果找不到则返回nil. (set 'aList '(a b c d e f g h)) → (a b c d e f g h) (member 'd aList) → (d e f g h) (member 55 aList) → nil

杨氏矩阵中查找元素

在杨氏矩阵中查找一个元素是否存在 杨氏矩阵即每一行均以递增顺序排列,每列从上到下也为递增顺序 方法一:数组 #include<stdio.h> #include<stdlib.h> #define COLS 3 #define ROWS 3 //要查找只要在找到右上角的元素和输入元素进行比较.如果右上角元素大,即可排除其他行,若小 //,则可排除本行,继续循环,用输入元素和右上角的元素进行比较 int find(int arr[][COLS], int rows, int cols

[转]grep 在文本中查找内容

转自: http://www.lampweb.org/linux/3/27.html 功能:grep系列是Linux中使用频率最高的文本查找命令.主要功能在一个或者多个文件中查找特定模式的字符串.如果该行有匹配的字符串,则输出整个行的内容.如果没有匹配的内容,则不输出任何内容.grep命令不改动源文件.Linux的grep家族包括grep.egrep.fgrep.rgrep.grep可以通过-G.-E.-F命令行选项来使用egrep和fgrep的功能. 语法:grep [选项] PATTERN