我通常将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列表更有效地实现了这一目标。

08-26 23:57
查看更多