C#Linq会做组合数学吗?

C#Linq会做组合数学吗?,c#,linq,lambda,C#,Linq,Lambda,我有这样的数据结构: class Product { public string Name { get; set; } public int Count { get; set; } } var list = new List<Product>(){ { Name = "Book", Count = 40}, { Name = "Car", Count = 70}, { Name = "Pen", Count = 60}........... } // 500 pro

我有这样的数据结构:

class Product
{
    public string Name { get; set; }
    public int Count { get; set; }
}

var list = new List<Product>(){ { Name = "Book", Count = 40}, { Name = "Car", Count = 70}, { Name = "Pen", Count = 60}........... } // 500 product object


var productsUpTo100SumCountPropert = list.Where(.....) ????

// productsUpTo100SumCountPropert output:
// { { Name = "Book", Count = 40}, { Name = "Pen", Count = 60} }
类产品
{
公共字符串名称{get;set;}
公共整数计数{get;set;}
}
var list=new list(){{Name=“Book”,Count=40},{Name=“Car”,Count=70},{Name=“Pen”,Count=60}……..}//500产品对象
var PRODUCTSUPTO100SUMCUNTPROPERT=列表。其中(…)????
//productsUpTo100SumCountPropert输出:
//{{Name=“Book”,Count=40},{Name=“Pen”,Count=60}
我希望对集合的计数属性求和,并仅返回属性计数和小于或等于100的products对象

如果不能使用linq,我可以使用什么更好的方法?

list.Where(p=>p.Count您需要扩展方法

list.Where(p=> p.Count <= 100).ToList();
list.Count(p => p.Count <= 100);

从你对其他人的答案的评论来看,看起来你试图解决的实际上是背包问题——特别是背包问题

关于这个主题的Wikipedia页面(我链接到)为您提供了一个简短的动态编程解决方案。它有伪多项式运行时间(“伪”),因为复杂性取决于您为背包选择的容量(
W

在运行算法之前,一个好的预处理步骤是找到所有项目权重(
w_i
)的最大公分母(
GCD
),然后将其从每个值中除掉

d <- GCD({w_1, w_2, ..., w_N})
w_i' <- w_i / d //for each i = 1, 2, ..., N
W' <- W / d //integer division here

d是的,这是可能的。我强烈建议您不要发布是/否问题,否则可能会有人回答并给出是/否答案。到目前为止,您做了哪些尝试?您对如何使用
Where
方法做了哪些研究(您的示例表明您认为它将成为一个有用的操作员)有很多关于这个主题的教程。你读过吗?你尝试过什么吗?你的尝试中发生了什么?没有答案是好的,除非你对你想要的有更好的理解。这里有三个不同的答案,我不知道其中是否有你想要的。我不想要一笔财产unt,我想要计数属性之和小于等于100的产品。@Alexandro_xpt如果您对lambda了解得足够多,可以在问题中询问它,那么在LINQ中使用它有什么您不了解的地方?在示例代码中,除了lambda之外,您拥有所需的所有内容,并且lambda在本例中很简单。计数和求和返回Int value.我不想求和或计数,我要的是其属性计数总和小于或等于100的乘积;那么你是说你想要列表中的所有内容,只要整个列表都是这个问题,它们没有相同的名称。我认为对于LINQ是不可能的,我正在寻找另一个算法。你的列表中是否包含具有相同名称的乘积不,@Uzzy,我只知道:应该得到他们的计数属性总和不超过100的产品。不,这只返回计数属性小于或等于100的产品。我需要产品组使她的计数属性总和为@Alexsandro_xpt“我希望LINQ或Lambda和Count属性,并且只给我Count prop小于或等于100的乘积对象。”他给了你你想要的东西…所以,你正在寻找列表中所有可能的组合,得到小于100的结果?所以{{Book},{Book,Computer},{Computer},{Car}非常好的人!如果有人想看,可以在
d <- GCD({w_1, w_2, ..., w_N})
w_i' <- w_i / d //for each i = 1, 2, ..., N
W' <- W / d //integer division here