C# Linq查询对除前三名以外的所有人进行分组
我在Linq中有以下代码,我想知道如何使它能够将前3名之外的所有其他人归为其他人类别,并对他们的数量进行汇总C# Linq查询对除前三名以外的所有人进行分组,c#,linq,C#,Linq,我在Linq中有以下代码,我想知道如何使它能够将前3名之外的所有其他人归为其他人类别,并对他们的数量进行汇总 var list = (from t in sortedCollection.DataItem orderby t.volume select t).Take(3); 您需要使用Skip忽略前3名,并将其余的分组如下: var list = (from t in sortedCollection.DataItem ord
var list = (from t in sortedCollection.DataItem
orderby t.volume
select t).Take(3);
您需要使用
Skip
忽略前3名,并将其余的分组如下:
var list = (from t in sortedCollection.DataItem
orderby t.volume
select t).Skip(3);
从注释中可以看出,您似乎只想在跳过前3条记录后获取特定字段的总和
var sum = (from t in sortedCollection.DataItem
orderby t.volume
select t).Skip(3).Sum(r=> r.VOLUME);
或者使用完整的方法语法:
var Sum = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.Sum(r=> r.volume);
如果您需要分组,它将如下所示: 对于方法语法,它应该类似于:
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField);
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField)
.Select(grp => new SqlCommand(
{
Key = grp.Key,
Sum = grp.Sum(r=> r.ValueFieldForSum)
}));
要根据字段执行求和
,可以执行以下操作:
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField);
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField)
.Select(grp => new SqlCommand(
{
Key = grp.Key,
Sum = grp.Sum(r=> r.ValueFieldForSum)
}));
您需要使用
Skip
忽略前3名,并将其余的分组如下:
var list = (from t in sortedCollection.DataItem
orderby t.volume
select t).Skip(3);
从注释中可以看出,您似乎只想在跳过前3条记录后获取特定字段的总和
var sum = (from t in sortedCollection.DataItem
orderby t.volume
select t).Skip(3).Sum(r=> r.VOLUME);
或者使用完整的方法语法:
var Sum = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.Sum(r=> r.volume);
如果您需要分组,它将如下所示: 对于方法语法,它应该类似于:
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField);
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField)
.Select(grp => new SqlCommand(
{
Key = grp.Key,
Sum = grp.Sum(r=> r.ValueFieldForSum)
}));
要根据字段执行求和
,可以执行以下操作:
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField);
var query = sortedCollection.DateItem.OrderBy(t => t.volume)
.Skip(3)
.GroupBy(t => t.YourGroupingField)
.Select(grp => new SqlCommand(
{
Key = grp.Key,
Sum = grp.Sum(r=> r.ValueFieldForSum)
}));
你说的“组”是什么意思?你说的“组”是什么意思?我该如何对它们进行分组?@Sean,你可以做
list.GroupBy(t=>t.YourField)
,或者在查询的末尾添加GroupBy
,或者完全使用方法语法而不是混合查询和方法语法。但是我不想按某个字段进行分组。我想把他们都聚在一起。@Sean,嗯,什么?你所说的集体是什么意思?是否要对列表的其余部分执行字段的求和操作?是的,我要对列表的其余部分执行求和操作。我从你剩下的代码中找到了如何做到这一点。但是,生成的var列表没有我可以更改的字段名(即它不是单个数据项)。var list=(从这个.Items orderby t.VOLUME中的t选择t).跳过(3).求和(item=>item.VOLUME);我该如何对它们进行分组?@Sean,您可以执行list.GroupBy(t=>t.YourField)
,或者在查询的末尾添加GroupBy
,或者完全使用方法语法,而不是混合查询和方法语法。但我不想按某个字段进行分组。我想把他们都聚在一起。@Sean,嗯,什么?你所说的集体是什么意思?是否要对列表的其余部分执行字段的求和操作?是的,我要对列表的其余部分执行求和操作。我从你剩下的代码中找到了如何做到这一点。但是,生成的var列表没有我可以更改的字段名(即它不是单个数据项)。var list=(从这个.Items orderby t.VOLUME中的t选择t).跳过(3).求和(item=>item.VOLUME);