linq 根据< T>不同总和的几个条件过滤IEnumerable〈IEnumerable>

mccptt67  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(127)

我有一个这样的类:

public class CookingRecipe
{
    public int Index { get; set; }
    public int A { get; set; }
    public int B { get; set; }
    public int C { get; set; }

    public int Energy { get; set; }

    public CookingRecipe(int index, int a, int b, int c, int energie)
    {
        Index = index;
        A = a;
        B = b;
        C = c;
        Energy = energie;
    }
}

我有3个整数(MaxA、MaxB和MaxC)和一个变量IEnumerable,如下所示,但我想过滤一些不符合且具有最大能量的IEnumerable:

用LINQ做的更好的方法是什么?我已经编辑了,因为我忘记了最大条件...
所以我得到了这样的东西(感谢马格纳斯)

var result = MyList.Where(x => x.Sum(y => y.A) <= MaxA && x.Sum(y => y.B) <= MaxB && x.Sum(y => y.C) <= MaxC);

但是如何在最大能量上增加滤波器呢?

ovfsdjhp

ovfsdjhp1#

您需要在顶层使用Where来筛选子组,然后在子组上使用Sum来与Max* 变量进行比较:

var ans = db.Where(crg => crg.Sum(cr => cr.A) <= MaxA &&
                          crg.Sum(cr => cr.B) <= MaxB &&
                          crg.Sum(cr => cr.C) <= MaxC &&
                          crg.Sum(cr => cr.Energy) <= MaxEnergie)
            .ToList();

相关问题