Linq in GroupBy GroupJoin
还是上一份的代码例子:
public class Person
{
public int ID { get; set; } public string Name { get; set; } public int Age { get; set; }
}
public class Dog
{
public int ID { get; set; }
public string Name { get; set; }
public int PersonID { get; set; }
}
public class DogClothes
{
public int ID { get; set; }
public string Name { get; set; }
public int DogID { get; set; }
}
public class ActionPerson
{
public List<Person> GetPersons()
{
List<Person> list = new List<Person>();
for (var i = ; i < ; i++)
{
Person p = new Person {ID=i+, Name = "hongda" + (i + ), Age = + i };
list.Add(p);
}
return list;
}
public List<Dog> GetDogs()
{
List<Dog> dogs = new List<Dog>();
for (var i = ; i < ; i++)
{
Dog dog = new Dog { ID = i, Name = "dogs" + i, PersonID = (i %)+ };
dogs.Add(dog);
}
return dogs;
}
public List<DogClothes> GetDogClotheses()
{
List<DogClothes> DogClothes = new List<DogClothes>();
for (var i = ; i < ; i++)
{
DogClothes clothes = new DogClothes() { ID = i, Name = "DogClothes" + i, DogID = (i % ) + };
DogClothes.Add(clothes);
}
return DogClothes;
}
public void Show<T>(List<T> list)
{
foreach (var l in list)
{
ShowObj(l);
}
}
public void ShowObj<T>(T data)
{
Type t = data.GetType();
PropertyInfo[] infos = t.GetProperties();
StringBuilder strBuilder = new StringBuilder();
foreach (var p in infos)
{
object value = p.GetValue(data, null);
string name = p.Name.ToString();
strBuilder.Append(name + ":" + value + ",");
}
Console.WriteLine(strBuilder.ToString());
}
public void ShowArray<T>(T[] arr)
{
foreach (var t in arr)
{
Console.WriteLine(t.ToString());
}
}
}
操作:
static void Main(string[] args)
{
ActionPerson ap = new ActionPerson();
List<Person> list = ap.GetPersons();
List<Dog> dogs = ap.GetDogs();
List<DogClothes> dogClotheses = ap.GetDogClotheses();
int[] arr = { , , , };
var result = list.Where(q => arr.Contains(q.ID));
ap.Show(result.ToList ());
Console.WriteLine("=============================");
var result2 = list.Where(q => dogs.Select(o => o.PersonID).Contains(q.ID));
ap.Show(result2.ToList());
Console.ReadLine();
}

var result = list.Select(o => o.Name);
ap.Show(result.ToList());

再看
var result = list.Select(o => o.Name);
ap.ShowArray(result.ToArray());

可以看出Select(o=>o.Name) 返回的是数组
返回对象
var result = list.Select(p => new { ID = p.ID, p.Name, p.Age });
ap.Show(result.ToList ());

对象数组
var result = list.Select(p => new { ID = p.ID, p.Name, p.Age });
ap.ShowArray(result.ToArray());

Group Join
var result = from a in list
join b in dogs on a.ID equals b.PersonID into c
select new { a, c };
ap.Show(result.ToList());

var result = from a in list
join b in dogs on a.ID equals b.PersonID into c
select new { a, c };
foreach (var r in result)
{
ap.ShowObj(r.a);
ap.Show(r.c.ToList());
Console.WriteLine("========================================");
}

var result = list.GroupJoin(dogs, a => a.ID, b => b.PersonID, (a, c) => new {a,c });
结果同上
c还有一些其他的属性
GroupBy
var result = from b in dogs group b by b.PersonID into g select new { g.Key, Count = g.Count(), Member = g };
foreach (var r in result)
{
Console.WriteLine(r.Key + "," + r.Count + ",");
foreach (var m in r.Member)
{
ap.ShowObj(m);
}
Console.WriteLine("=================================");
}

var result = (from b in dogs select b).GroupBy(q => q.PersonID).Select(q => new { q.Key, Count = q.Count(), Member = q });
结果同上
Linq in GroupBy GroupJoin的更多相关文章
- Linq分组操作之GroupBy,GroupJoin扩展方法源码分析
Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...
- Linq Mysql GroupBy语句的问题处理
语句如下: var resumeList = db.ChannelResume.Where(model); var groupValues = resumeList.GroupBy(t => n ...
- linq lambda GroupBy 用法
Linq 中按照多个值进行分组(GroupBy) /// <summary>要查询的对象</summary> class Employee { public int ID ...
- 转载有个小孩跟我说LINQ(重点讲述Linq中GroupBy的原理及用法)
转载原出处: http://www.cnblogs.com/AaronYang/archive/2013/04/02/2994635.html 小孩LINQ系列导航:(一)(二)(三)(四)(五)(六 ...
- 转载Linq中GroupBy方法的使用总结
Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...
- LINQ 之 GroupBy
声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 本文作者文采欠佳,文字表达等方面不是很好,但实际的代码例子是非常实用的,请作参考. 一.先准备要使用的类: 1.Person类: cl ...
- [C#] LINQ之GroupBy
声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 本文作者文采欠佳,文字表达等方面不是很好,但实际的代码例子是非常实用的,请作参考. 一.先准备要使用的类: 1.Person类: cl ...
- Linq中GroupBy方法的使用总结(转)
Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...
- Linq中GroupBy方法的使用总结(转载)
from:https://www.cnblogs.com/zhouzangood/articles/4565466.html Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均 ...
随机推荐
- 完美解决onchange不能实时的监听
我们大家都知道onchange有时候很不好用,因为onchange事件是离开焦点后才会被触发,而不是实时去监听! 那么oninput()事件和onpropertychange()完美的解决了问题:(o ...
- AndroidStudio 3.3+ ButterKnife R2 红名问题
如果你一直用着ButterKnife,但是用的低版本(比如用得很多的8.4.0),然后在多module项目中一定知道要把R改成R2 然后最近如果升级AndroidStudio了,升到3.3以上(201 ...
- TcMalloc的介绍以及Windows下安装使用
本文由博主(SunboyL)原创,转载请注明出处:http://www.cnblogs.com/xsln/p/Introduction_TcMalloc.html 介绍: TcMalloc(Threa ...
- kubernetes实战(十一):k8s使用openLDAP统一认证
1.基本概念 为了方便管理和集成jenkins,k8s.harbor.jenkins均使用openLDAP统一认证. 2.部署openLDAP 此处将openLDAP部署在k8s上,openLDAP可 ...
- Redis添加历史浏览记录
参考资料 http://redisdoc.com/index.html http://redis-py.readthedocs.io/en/latest/#indices-and-tables 1.什 ...
- Service 的 onStartCommand(Intent, int, int) 返回值
(1)START_NOT_STICKY If the system kills the service after onStartCommand() returns, do not recreate ...
- 前端 HTML body标签相关内容 常用标签 换行标签 br
换行标签 <br> <br>标签用来将内容换行,其在HTML网页上的效果相当于我们平时使用word编辑文档时使用回车换行. 在第一行中间加上br <!DOCTYPE ht ...
- python 基础 列表生成式 生成器
列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, ...
- 1分钟了解协同过滤,pm都懂了
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/z50L2O08e2u4afToR9A/article/details/79565720 projec ...
- vertx异步编程测试
vertx是异步编程的框架,性能较高,开发简单.异步编程就是当一个请求来了,vertx将其交由一个事件进行处理,然后继续向下执行,等处理完成,返回结果,通知客户端.这是一个由服务端反向调用客户端的过程 ...