LINQ和GROUPBY [英] LINQ and GroupBy
问题描述
我以前没有做过太多LINQ,所以我经常发现一些方面的混乱。最近有人创建了一个查询,看起来像使用GROUPBY运算符以下。下面是他们做了什么:
I haven't done much LINQ before, so I often find some aspects confusing. Recently someone created a query that looks like the following using the GroupBy operator. Here's what they did:
List<int> ranges = new List<int>() {100, 1000, 1000000};
List<int> sizes = new List<int>(new int[]{99,98,10,5,5454, 12432, 11, 12432, 992, 56, 222});
var xx = sizes.GroupBy (size => ranges.First(range => range >= size));
xx.Dump();
基本上我作为主要表现是如何工作的很很困惑,即ranges.First(范围= >范围> =尺寸
Basically I am very quite confused as to how the key expression works, i.e. ranges.First(range => range >= size
任何人都可以提供一些线索?是否可以进一步分解,使这个更容易理解呢?我认为,首先会产生一个结果。
Can anyone shed some light? Can it be decomposed further to make this easier to understand? I thought that First would produce one result.
先谢谢了。
推荐答案
尺寸=> ; ranges.First(范围= GT;范围> =大小)
此函数功能构建键,在其上的大小将被分组这需要电流的大小,并发现第一范围,这是大于或等于电流大小
size => ranges.First(range => range >= size)
this Func builds key, on which sizes will be grouped. It takes current size and finds first range, which is greater or equal current size.
它是如何工作的:
有关尺寸 99
第一个范围而方式> = 99
是 100
所以,计算的关键值将是 100
尺寸去组键 100
。
For size 99
first range which >= 99
is 100
. So, calculated key value will be 100
. Size goes to group with key 100
.
接下来大小 98
, 10
, 5
也将获得关键 100
,进入到该组。
Next sizes 98
, 10
, 5
also will get key 100
and go to that group.
有关尺寸 5454
计算关键值将是百万
(这是其中较大的第一个范围的 5454
。因此,新的关键是创建和大小去组键百万
。
For size 5454
calculated key value will be 1000000
(it's the first range which is greater that 5454
. So, new key is created, and size goes to group with key 1000000
.
等
这篇关于LINQ和GROUPBY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!