class Program
    {
        static void Main(string[] args)
        {
            List<Person> people = new List<Person>() {
                new Person(1,12),
                 new Person(1,24),
                  new Person(1,26)
            };
            var pers = people.GroupBy(p => p.Id)
                .Select(p => new Person()
                {
                    Id = p.Key,
                    Price = p.Sum(a => a.Price)
                }).ToList();//ToList了后面people 里面再加新的元素不会影响 到pers的值,已经指向了新的地址
            var pers1 = people.GroupBy(p => p.Id)
             .Select(p => new Person()
             {
                 Id = p.Key,
                 Price = p.Sum(a => a.Price)
             });//people加新的元素之后,pers1的值会随之改变,因为指向的是同一地址
            people.Add(new Person(1,20));
            Console.WriteLine("加了ToList之后的pers的总和为{0}",pers.FirstOrDefault().Price);
            Console.WriteLine("没加ToList的pers1的总和为{0}", pers1.FirstOrDefault().Price);
        }
      
    }
    public class Person
    {
        private int _id;
        private decimal _price;
        public int Id { get; set; }
        public decimal Price { get; set; }
        public Person()
        {
        }
        public Person(int _id,decimal _price)
        {
            Id = _id;
            Price = _price;
        }
    }
 

GroupBy之后加ToList和不加ToList有什么区别吗?的更多相关文章

  1. C语言编译数组中有的加code有的不加,有什么区别

    像uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};和uchar ds1302[]={0xfe,0xfd,0xfb,0xf7,0 ...

  2. new对象时,类名后加括号与不加括号的区别

    [1]默认构造函数 关于默认构造函数,请参见随笔<类中函数> 请看测试代码: 1 #include <iostream> 2 using namespace std; 3 4 ...

  3. C++中创建对象的时候加括号和不加括号的区别

    c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My ...

  4. 详解变量声明加 var 和不加 var 的区别

    在全局作用域中声明变量加 var 关键字和不加 var ,js 引擎都会将这个变量声明为全局变量,在实际运行时,两种声明方式的变量的行为也是几乎一致的.但是在全局作用域下是否声明一个变量的 时候加va ...

  5. JS声明对象时属性名加引号与不加引号的问题

    般情况下属性名加引号和不加引号是都可以的,效果是一样的. var obj = { name : '你好', 'age' : 1, }; document.write( obj['name'] + '& ...

  6. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  7. js中加“var”和不加“var”的区别

    JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...

  8. 【转】new对象时,类名后加括号和不加括号的区别

    请看测试代码: #include <iostream> using namespace std; // 空类 class empty { }; // 一个默认构造函数,一个自定义构造函数 ...

  9. onclick时间加return和不加return的区别

    JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是 ...

随机推荐

  1. ArrayList存储随机数字

    package com.fgy.demo; import java.util.ArrayList; import java.util.Random; /** * ArrayList实现存储随机数字 * ...

  2. ML.NET 笔记

    ROC曲线 ROC空间将偽陽性率(FPR)定義為 X 軸,真陽性率(TPR)定义为 Y 轴. TPR:在所有實際為陽性的樣本中,被正確地判斷為陽性之比率. FPR:在所有實際為阴性的样本中,被錯誤地判 ...

  3. 函数(定义、参数、return、变量、作用域、预解析)

    一.函数定义 1.方式一       function 函数名(参数){  函数体  }——————函数声明的方法 function fn(a){ console.log(a); }: 2.方式二  ...

  4. 10-ESP8266 SDK开发基础入门篇--上位机通过串口控制ESP8266灯亮灭

    https://www.cnblogs.com/yangfengwu/p/11087618.html 其实这一节就是对上三节的综合测试 https://www.cnblogs.com/yangfeng ...

  5. SQL必知必会收集学习

    1.按查询列位置排序:如按第一列 降序排序 desc

  6. sqlalchemy lock and atomic

    prepare: MYSQL tutorial Prepare a table set evn DBUSER=root DBPASS= DBNAME=cyborgTBNAME="atomic ...

  7. Brexit Gym - 101490C

    题目链接:Brexit vector的使用(vector存边),巧用queue,相当于Bfs /* */ # include <iostream> # include <cstdio ...

  8. 框架 get 请求乱码

    解决方案: 在 tomcat 配置文件中添加 URIEncoding="utf-8"

  9. mysql ,with rollup的用法

    如下,可以看到使用后,也统计了null的个数. mysql> select * from table1; +----------+------------+-----+------------- ...

  10. fillter根据value来匹配字段

    字段对应 let cashBackState = { 'WAIT_FIVE': '满5单可返现', 'FINISHED': '已返现' } filters: { cashBackStateFilter ...