pythonlist查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"));exists的用法
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");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。