我正在处理一些遗留代码,所以不能在这里使用Generic List。我有一个从数据层方法返回的ArrayList。最后一项包含ID和描述字段。我想循环遍历ArrayList并在Description字符串中搜索匹配 - 任何想法?
格式
ID DESCRIPTION
1 SomeValue
我知道我可以这样做:
bool found = false;
if (arr.IndexOf("SomeValue") >= 0)
{
found = true;
}
但是有没有办法对特定的描述值进行字符串比较?
更新
西雅图巴杰的修正版答案:
for (int i = 0; i < arr.Count; i++)
{
if (arr[i].ToString() == "SomeValue")
{
// Do something
break;
}
}
答案 0 :(得分:3)
bool found = false;
foreach (Item item in arr)
{
if ("Some Description".Equals (item.Description, StringComparison.OrdinalIgnoreCase))
{
found = true;
break;
}
}
答案 1 :(得分:1)
我可能会在你的问题中遗漏一些东西,因为这对我来说似乎很简单。但后来我很老了......
这有帮助吗?
protected void Page_Load(object sender, EventArgs e)
{
ArrayList arrSample = new ArrayList();
// populate ArrayList
arrSample.Items.Add(0, "a");
arrSample.Items.Add(1, "b");
arrSample.Items.Add(2, "c");
// walk through the length of the ArrayList
for (int i = 0; i < arrSample.Items.Count; i++)
{
// you could, of course, use any string variable to search for.
if (arrSample.Items[i] == "a")
lbl.Text = arrSample.Items[i].ToString();
}
}
正如我所说,不确定我是否遗漏了你的问题。 獾
答案 2 :(得分:0)
foreach(object o in arrayList)
{
var description = o.GetType().GetProperty("Description").GetValue(o, null);
if("some description".Equals(description) )
{
//do something
}
}
答案 3 :(得分:0)
您确定不能使用LINQ吗?你在运行什么版本的框架?
仅仅因为这不是通用类型并不意味着你不能这样做。考虑arr.Cast(YourType).Where(...)。
答案 4 :(得分:0)
如果您有ArrayList,请尝试使用ArrayLists的“Contains”或“BinarySearch”内置函数。
protected void Page_Load(object sender, System.EventArgs e)
{
ArrayList alArrayList = new ArrayList();
alArrayList.Insert(0, "a");
alArrayList.Insert(1, "b");
alArrayList.Insert(2, "c");
alArrayList.Insert(3, "d");
alArrayList.Insert(4, "e");
//Use Binary Search to find the index within the array
if (alArrayList.BinarySearch("b") > -1) {
txtTemp.Text += "Binary Search Array Index: " + alArrayList.BinarySearch("b").ToString;
}
//Alternatively if index not needed use Contains function
if (alArrayList.Contains("b")) {
txtTemp.Text += "Contains Output: " + alArrayList.Contains("b").ToString;
}
}