python list 查找find_List 泛型 集合中 Find 的用法

以前在开发中为了对List,String[].Array进行元素的查找一般都是这样做:

List lists = new List();

list.add("111");

.....

for(int i=0;i

{

if(list[i].equals("要查找的元素"))

{....}

}

其实在C# 2.0对List,Array元素的查找,MS已经提供了一些泛型方法,让Coding人员更好的查找,遍历,等等...

以下是我简单对List的一些操作所写的Demo.供大家参考,以及和大家进行交流。

static void Main(string[] args)

{

//Prdicate用法

//第一种用法:[不创建显式的委托,也不创建指定泛型方法的类型参数]

ListOneMethod();

//Prdicate用法

//第二种用法:[创建显式的委托,也创建指定泛型方法的类型参数]

ListTwoMethod();

//第三种用法:[同于第二种方法,但用了两个类进行区分]

ListThreeMethod();

}

#region 第一种用法

private static void ListOneMethod()

{

String[] strs = { "WPF", "WCF", "WF", "Author", "WinFx", "Linq" };

String Name = Array.Find(strs, FindWhere);

Console.WriteLine("Result: ----------  " + Name + "  ----------");

}

public static Boolean FindWhere(String str)

{

return str.Equals("Author") ? true : false;

}

#endregion

#region 第二种用法

private static void ListTwoMethod()

{

List strlist = new List();

strlist.Add("WPF");

strlist.Add("WCF");

strlist.Add("WF");

strlist.Add("Author");

strlist.Add("WinFx");

strlist.Add("Linq");

Predicate FindValues = delegate(String list)

{

return list.Equals("WinFx") ? true : false;

};

Console.WriteLine("Result: ---FindIndex---  " + strlist.FindIndex(FindValues) + "  ----------");

Console.WriteLine("Result: ---Exists----  " + strlist.Exists(FindValues) + "  ----------");

List lists = strlist.FindAll(FindValues);

foreach (string str in lists)

{

Console.WriteLine("Result: ---FindAll-----  " + str + "  ----------");

}

Console.WriteLine("Result: ---FindLast----  " + strlist.FindLast(FindValues) + "  ----------");

Console.WriteLine("Result: ---FindLastIndex--  " + strlist.FindLastIndex(FindValues) + "  ----------");

Console.WriteLine("Result: ---RemoveAll--  " + strlist.RemoveAll(FindValues) + "  ----------");

Console.WriteLine("Result: ---TrueForAll-  " + strlist.TrueForAll(FindValues) + "  ----------");

}

#endregion

#region 第三种用法

private static void ListThreeMethod()

{

ListClass lists = new ListClass();

// 使用List.Add()方法來新增集合內容

lists.Values.Add(new ValueClass("WPF"));

lists.Values.Add(new ValueClass("WCF"));

lists.Values.Add(new ValueClass("WF"));

lists.Values.Add(new ValueClass("Author"));

lists.Values.Add(new ValueClass("WinFx"));

lists.Values.Add(new ValueClass("Linq"));

Predicate FindValue = delegate(ValueClass obj) { return obj.Value == "Author"; };

Console.WriteLine("Result: ----------  " + lists.Values.FindIndex(FindValue) + "  ----------");

Console.WriteLine("將所有資料列出");

int idx = 0;

Action ListAll = delegate(ValueClass obj)

{

Console.WriteLine(string.Format("第 {0} 個的Value值為 {1}", idx, obj.Value));

idx++;

};

lists.Values.ForEach(ListAll);

}

public class ValueClass

{

private string _value = string.Empty;

public string Value

{

get { return _value; }

}

public ValueClass(string value)

{

_value = value;

}

}

public class ListClass

{

private List _values = new List();

public List Values

{

get { return _values; }

}

public ListClass() { }

}

#endregion

*Predicate 是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。当前 List 的元素被逐个传递给 Predicate 委托,在找到匹配项时停止处理。此方法执行线性搜索;

还有就是有关于List其他的一些查找方法:

1.当需要依条件来寻找集合内的某个类别时, 可用ListFind(), ListFindLast()来搜寻, 回传搜寻到的类别

2.当需要依条件来寻找集合内的某些类别时, 可用ListFindAll()来搜寻, 将回传一个新的List对象集合

3.当需要依条件来寻找集合内的某个类别的索引值时, 可用ListFindIndex(), ListFindLastIndex()

4.ListFind(), ListFindLast()的不同是, ListFind()由Index=0开始寻找, 而ListFindLast()由Index = List.Count - 1开始寻找

同理, ListFindIndex(), ListFindLastIndex()也是一样, 不同的是, 这两个回传的是索引值

5.当使用ListFind()相关函示时, 必须delegate.这个Predicate

其内容就是搜寻的判断式, 如:

Predicate FindJaofeng = delegate(class1 obj) {

return obj.Value == "Jaofeng";

};

return type为boolean值

而上面也有介绍一个List.ForEach(), 这个Method只是将原本我们用foreach()的方式, 简化而已

譬如原本的习惯写法:

foreach (class1 cls in myText.Values) {

//

 Do something

}

// 现在变成

Action ActionName = delegate(class1 obj) {

//

 Do something

};

myText.Values.ForEach(ActionName);

查找DropDownList中的Item的

ListItemCollection items = DisplayModeDropdown.Items;

查找 Index:

    int selectedIndex = items.IndexOf(items.FindByText("需要查找匹配的item"));

查找 Value:

    string selectedValue = items.FindByText("需要查找匹配的item");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值