原文链接:http://blog.csdn.net/iloli/article/details/7684764
示例1:
GroupBy 分组在List<>泛型中的应用
原表:
按姓名Nam 分组后结果:
对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.DataSetExtensions
代码:
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
-
- List<Person> persons1 = new List<Person>();
-
- private void Form1_Load(object sender, EventArgs e)
- {
- initForm();
- }
- private void initForm()
- {
-
- persons1.Add(new Person("张三", "男", 20, 1500));
- persons1.Add(new Person("王成", "男", 32, 3200));
- persons1.Add(new Person("李丽", "女", 19, 1700));
- persons1.Add(new Person("何英", "女", 35, 3600));
- persons1.Add(new Person("何英", "女", 18, 1600));
- dataGridView1.DataSource = persons1;
-
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
-
-
-
-
-
-
-
-
- var ls = persons1.GroupBy(a => a.Name).Select(g => (new { name = g.Key, count = g.Count(), ageC = g.Sum(item => item.Age), moneyC = g.Sum(item => item.Money) }));
-
- var ls2 = from ps in persons1
- group ps by ps.Name
- into g
- select new { name = g.Key, count = g.Count(), ageC = g.Sum(item => item.Age), moneyC = g.Sum(item => item.Money) };
-
- dataGridView1.DataSource = ls.ToList();
-
- }
- }
-
-
-
-
- public class Person
- {
- public string Name { get; set; }
- public int Age { get;private set; }
- public string Sex { get; set; }
- public int Money { get; set; }
-
- public Person(string name, string sex, int age, int money)
- {
- Name = name;
- Age = age;
- Sex = sex;
- Money = money;
- }
- }
更多内容见:http://www.cnblogs.com/TeyGao/archive/2012/08/14/2638859.html
[ 笔记 ] 补充项目核心SQL代码:
var introResult = coinInfoResult.GroupBy(a=> a.Introducer).Select(g => new IntroListDto
{
Introducer = g.Key,
Detail =string.Join(",", g.Select(f => f.UserName)),
Balance = g.Sum(item => item.Value),
IntroductorPhone=g.FirstOrDefault().IntroductorPhone,
IntroductorEmail=g.FirstOrDefault().IntroductorEmail,
IcoCoinAmount =g.Sum(item=>item.IcoCoinAmount)*(decimal)0.1,
})
.OrderByDescending(m=>m.Balance).Where(k=>k.Introducer!=null).ToList();