LINQ 中 GroupBy 子句中的多个字段(其中一个是计算字段)
Multiple fields in GroupBy clause in LINQ (where one is computed field)
我有一个 LINQ 查询,我需要在该查询上添加两个字段作为 group by 子句。虽然我可以轻松地使用尽可能多的列字段进行分组,但是当其中一个字段是计算字段时就会出现问题。在这种情况下,我似乎无法理解如何添加第二个属性
var values = intermediateValues
//.GroupBy(x => new {x.Rate, x.ExpiryDate })
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize)) * BucketSize })
.Select(y => new FXOptionScatterplotValue
{
Volume = y.Sum(z => z.TransactionType == "TERMINATION" ? -z.Volume : z.Volume),
Rate = y.Key.Rate,
ExpiryDate = y.Key.ExpiryDate,
Count = y.Count()
}).ToArray();
在上面的代码示例中,我想将 ExpiryDate 添加到我现有的 GroupBy 子句中,该子句已经有一个 Rate 的计算字段。代码在 VS 编辑器中看起来像这样
因此,只需将其包含在注释掉的代码中即可:
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize)) * BucketSize,
r.ExpiryDate })
这可能对您有所帮助
var values = intermediateValues
//.GroupBy(x => new {x.Rate, x.ExpiryDate })
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize) ) * BucketSize,ExpiryDate1 = r.ExpiryDate })
.Select(y => new FXOptionScatterplotValue
{
Volume = y.Sum(z => z.TransactionType == "TERMINATION" ? -z.Volume : z.Volume),
Rate = y.Key.Rate,
ExpiryDate = y.Key.ExpiryDate1,
Count = y.Count()
}).ToArray();
只需将 ExpiryDate1 用作匿名类型并将其用作键名....
我有一个 LINQ 查询,我需要在该查询上添加两个字段作为 group by 子句。虽然我可以轻松地使用尽可能多的列字段进行分组,但是当其中一个字段是计算字段时就会出现问题。在这种情况下,我似乎无法理解如何添加第二个属性
var values = intermediateValues
//.GroupBy(x => new {x.Rate, x.ExpiryDate })
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize)) * BucketSize })
.Select(y => new FXOptionScatterplotValue
{
Volume = y.Sum(z => z.TransactionType == "TERMINATION" ? -z.Volume : z.Volume),
Rate = y.Key.Rate,
ExpiryDate = y.Key.ExpiryDate,
Count = y.Count()
}).ToArray();
在上面的代码示例中,我想将 ExpiryDate 添加到我现有的 GroupBy 子句中,该子句已经有一个 Rate 的计算字段。代码在 VS 编辑器中看起来像这样
因此,只需将其包含在注释掉的代码中即可:
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize)) * BucketSize,
r.ExpiryDate })
这可能对您有所帮助
var values = intermediateValues
//.GroupBy(x => new {x.Rate, x.ExpiryDate })
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize) ) * BucketSize,ExpiryDate1 = r.ExpiryDate })
.Select(y => new FXOptionScatterplotValue
{
Volume = y.Sum(z => z.TransactionType == "TERMINATION" ? -z.Volume : z.Volume),
Rate = y.Key.Rate,
ExpiryDate = y.Key.ExpiryDate1,
Count = y.Count()
}).ToArray();
只需将 ExpiryDate1 用作匿名类型并将其用作键名....