gpt4 book ai didi

c# - Dictionary 是否比 List 上的 LINQ 更快?

转载 作者:可可西里 更新时间:2023-11-01 07:50:34 25 4
gpt4 key购买 nike

我一般用List<T>用于收藏。但是如果我需要快速查找一个集合,那么例如在下面的示例中,我将使用字典,以便我可以通过 id 快速查找它:

Dictionary<int, Customer>

但是因为我可以使用 LINQ 来查询 List<T>无论如何,如下所示,是否有任何理由去解决使用字典而不是列表的麻烦?是字典更快还是 LINQ 在幕后做了一些使其同样快的事情?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Customer> customers = new List<Customer>()
{
new Customer { Id = 234, FirstName = "Jim", LastName = "Smith" },
new Customer { Id = 345, FirstName = "John", LastName = "Thomas" },
new Customer { Id = 654, FirstName = "Rick", LastName = "Ashton" },
new Customer { Id = 948, FirstName = "Rod", LastName = "Anders" }
};

var customer = (from c in customers
where c.Id == 654 select c).SingleOrDefault();
Console.WriteLine(customer.Display());

Console.ReadLine();

}
}


public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }

internal string Display()
{
return String.Format("{0}, {1} ({2})", LastName, FirstName, Id);
}

}
}

最佳答案

如果您逻辑上想要创建一个集合,您可以在其中轻松地通过他们的 ID 查找客户,我会使用某种形式的 IDictionary<int, Customer> .这表达了您想要实现的目标。

现在您可以使用列表来做同样的事情,正如 leppie 所说,对于小型数据集,它的速度差不多甚至更快——但对于小型数据集,它无论如何都会非常快,那你为什么要关心?我认为更重要的是告诉代码的读者您要对集合做什么 - 字典比列表更有效地实现了这个目标,IMO。

关于c# - Dictionary<TKey, TValue> 是否比 List<T> 上的 LINQ 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com