-1

工作代码。

  double[] confirmingList = new double[] { -3, -2, -1 };
    
    var Tdb = rDatas
        .Select(d => new
        {
            TScore = (new List<double> {
                d.T15Min, // Let this count .2
                d.T30Min, // .25
                d.T65Min, // .3
                d.T130Min, // .4
                d.T195Min, // .5
                d.TDaily,  // .8
                d.TWeekly // 1
                }).Count(c => confirmingList.Contains(c))

我想要的是按时间框架匹配和按属性加权进行汇总。有没有一些Linq Kung Fu可以做到这一点?我应该有一些我通过属性名称乘以权重的类吗?我怀疑聚合运算符中有一些允许这样做的东西?

在通过修改或加权聚合值时,无法真正找到显示逻辑操作匹配的内容。

4

1 回答 1

1

使用 indexedSelect方法,您可以将每个时间范围与其应该计算的权重相匹配:

double[] confirmingList = new double[] { -3, -2, -1 };
var weights = new[] { 0.2, 0.25, 0.3, 0.4, 0.5, 0.8, 1.0 };

var Tdb = rDatas
    .Select(d => new {
        TScore = (new[] {
            d.T15Min, // Let this count .2
            d.T30Min, // .25
            d.T65Min, // .3
            d.T130Min, // .4
            d.T195Min, // .5
            d.TDaily,  // .8
            d.TWeekly // 1
            }).Select((t,i) => confirmingList.Contains(t) ? weights[i] : 0).Sum()
    });
于 2021-01-04T19:30:13.573 回答