我通常将List<T>
用于集合。
但是如果我需要快速查找集合,例如在下面的示例中,我将使用字典,以便通过id
快速查找它:
Dictionary<int, Customer>
但是,由于我仍然可以使用LINQ来查询
List<T>
,如下所示,是否有任何原因要克服使用字典而不是列表的麻烦? 是Dictionary更快还是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列表更有效地实现了这一目标。