我有一个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编辑器中看起来像这样
答案 0 :(得分:2)
所以只需在注释掉的代码中包含它:
.GroupBy(r => new { Rate = ((int)(r.Rate / BucketSize)) * BucketSize,
r.ExpiryDate })
答案 1 :(得分:0)
这可能对您有所帮助
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作为匿名类型,并将其用作键名....