在ListArray中搜索C#

时间:2016-11-27 11:30:45

标签: c# linq

在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);
    }
}

我知道如果列表数据包含太多数据,这种搜索方法就不好了。

3 个答案:

答案 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) )。计算它们的时间,然后选择更快的一个。

或换句话说:衡量代码比那些认为自己太聪明而无法衡量的人更有优势。 ;)

为了进一步加快速度,您可能需要考虑对列表进行排序,然后对列表进行二进制搜索。它增加了插入的时间,因为您必须在插入后对列表进行排序,但它应该加快搜索过程。但话又说回来:不要只听我的话,测量它!