在C#中从列表数组中搜索数据的最快方法是什么?
我的代码:
public class fruits
{
public string Initial;
public string Fruit;
public fruits(string initials, string names)
{
Initial = initials;
Fruit = names;
}
}
// load
List<fruits> List = new List<fruits>();
List.Add(new fruits("A", "Apple"));
List.Add(new fruits("P", "Pineapple"));
List.Add(new fruits("AP", "Apple Pineapple"));
//combo box select text
var text = combobox.SelectText();
for (int i=0; i<list.Count(); i++)
{
if (list[i].Fruit == text)
{
MessageBox.Show(list[i].Initial);
}
}
我知道如果列表数据包含太多数据,这种搜索方法就不好了。
答案 0 :(得分:2)
如果你想要&#34;快速&#34;解决方案,您应该使用foreach而不是LINQ。这个解决方案可以大大提高您的性能:
fruits firstOrDefault = null:
foreach (fruits f in List)
{
if (f.Fruit == text)
{
FirstOrDefault = f;
break;
}
}
您可以在
等帖子中获得有关LINQ性能的更多信息答案 1 :(得分:1)
您可以使用 linq
var result = List.FirstOrDefault(q => q.Fruit == text );
MessageBox.Show(result.Initial);
答案 2 :(得分:0)
在某种情况下判断哪种方法最快的最好(也是唯一)方法是使用不同的算法对其进行基准测量。这里已经有两个答案/方法(LINQ和foreach) )。计算它们的时间,然后选择更快的一个。
或换句话说:衡量代码比那些认为自己太聪明而无法衡量的人更有优势。 ;)
为了进一步加快速度,您可能需要考虑对列表进行排序,然后对列表进行二进制搜索。它增加了插入的时间,因为您必须在插入后对列表进行排序,但它应该加快搜索过程。但话又说回来:不要只听我的话,测量它!