LINQ group by的使用示例

下面通过一个示例来展示linq中group by的使用。

类Person如下:

class Person { 
internal int PersonId;
internal string car ;
}

Person列表List<Person>:

persons[0] = new Person { PersonID = 1, car = "Ferrari" }; 
persons[1] = new Person { PersonID = 1, car = "BMW" };
persons[2] = new Person { PersonID = 2, car = "Audi" }; 

对Person进行分组

方法一:使用查询表达select

var results = from p in persons
group p.car by p.PersonId into g
select new { PersonId = g.Key, Cars = g.ToList() };

方法二:非查询表达,直接使用GroupBy

var results = persons.GroupBy(
p => p.PersonId,
p => p.car,
(key, g) => new { PersonId = key, Cars = g.ToList() });

得到结果如下:

results[0].PersonId = 1; 
List<string> cars = results[0].cars;
result[1].PersonId = 2;
List<string> cars = result[1].cars;

替代方案:Lookup

如果是简单获取指定person的cars列表,可以使用Lookup方法:

var carsByPersonId = persons.ToLookup(p => p.PersonId, p => p.car);

获取cars列表

var carsForPerson = carsByPersonId[personId];

版权声明:著作权归作者所有。

相关推荐

笔记示例

欢迎使用码经笔记,简单用法如下:1、编辑器工具栏在哪里?请随便选择文本试一下。hello world!2、怎么上传图片?请回车换行试一下。 3、发布点击右上角的发布按钮发布笔记。建议和问题可以发邮件到pr@majing.io。期待您的参与和宝贵意见。Enjoy it!!!

SwiftUI Alerts的使用示例

SwiftUI里的Alerts可以分为三类:警告对话框(Alert Dialogs)操作列表(Action Sheets)弹窗(Popovers)警告对话框(Alert Dialogs)示例使用SwiftUI,我们可以很容易地使用声明的方式来创建警告框以及定义操作,示例如下:struct AlertView: View { @State private var showingAlert =

笔记示例

欢迎使用码经笔记,简单用法如下:1、编辑器工具栏在哪里?请随便选择文本试一下。2、怎么上传图片?请回车换行试一下。3、发布点击右上角的发布按钮发布笔记。建议和问题可以发邮件到pr@majing.io。期待您的参与和宝贵意见。Enjoy it!!!

笔记示例

欢迎使用码经笔记,简单用法如下:1、编辑器工具栏在哪里?请随便选择文本试一下。2、怎么上传图片?请回车换行试一下。 3、发布如果您想分享笔记,点击右上角的发布按钮。建议和问题可以发邮件到pr@majing.io。期待您的参与和宝贵意见。Enjoy it!!!

C#对DataTable做LINQ查询

我们是不能直接对DataTable做LINQ查询,DataRowCollection是没有实现IEnumerable<T>。有一些方法可以间接实现对DataTable执行LINQ查询。AsEnumerable()使用DataTable的扩展AsEnumerable(),把DataTable转换为IEnumerable<DataRow>。var results&nb

Android使用CountDownTimer实现倒计时示例(Kotlin)

CountDownTimer是一个抽象类,它的构造函数为CountDownTimer(long millisInFuture, long countDownInterval) millisInFuture:倒计时的总时间,从调用start()方法开始。毫秒数countDownInterval:倒计时的时间间隔。毫秒数。CountDownTimer主要有四个方法:syn