什么是Linq的延迟加载

1、LookUp<TKey,TElement>

转载于http://www.cnblogs.com/multiplesoftware/archive/2011/03/31/2000528.html

 

class Program
    {
        static void Main(string[] args)
        {
            var products = GetList();
            // Lookup<Tkey,TElement>需要调用扩展方法ToLookup创建,
            var groups = products.ToLookup(p => p.Category);
            // Linq的Group有延迟加载
            //var groups = products.GroupBy(p => p.Category);
            products.RemoveAll(p => p.Category == "Electronics");
            foreach (var group in groups) {
                Console.WriteLine(group.Key);
                PrintCategory(groups, group.Key);
            }
            Console.Read();
        }

        private static void PrintCategory(ILookup<string, Product> productsByCategory, string categoryName)
        {
            foreach (var item in productsByCategory[categoryName]) {
                Console.WriteLine("\t" + item);
            }
        }

        public static List<Product> GetList()
        {
            var products = new List<Product>
                               {
                                   new Product {Id = 1, Category = "Electronics", Value = 15.0},
                                   new Product {Id = 2, Category = "Groceries", Value = 40.0},
                                   new Product {Id = 3, Category = "Garden", Value = 210.3},
                                   new Product {Id = 4, Category = "Pets", Value = 2.1},
                                   new Product {Id = 5, Category = "Electronics", Value = 19.95},
                                   new Product {Id = 6, Category = "Pets", Value = 21.25},
                                   new Product {Id = 7, Category = "Pets", Value = 5.50},
                                   new Product {Id = 8, Category = "Garden", Value = 13.0},
                                   new Product {Id = 9, Category = "Automotive", Value = 10.0},
                                   new Product {Id = 10, Category = "Electronics", Value = 250.0},
                               };
            return products;
        }
    }

    public sealed class Product
    {
        public int Id { get; set; }
        public string Category { get; set; }
        public double Value { get; set; }


        public override string ToString()
        {
            return string.Format("[{0}: {1} - {2}]", Id, Category, Value);
        }
    }

 

posted @ 2015-06-19 17:12  江境纣州  阅读(98)  评论(0编辑  收藏  举报