Linq 运算符聚合匹配值并对它们进行加权

Linq operator to aggregate matching value and weight them

工作代码。

  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 可以做到这一点?我是否应该传递一些 class 以乘以 属性 名称的权重?我怀疑聚合运算符中有些东西允许这样做?

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

使用索引 Select 方法,您可以将每个时间范围与其权重相匹配,当它应该被计算时:

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()
    });