8,497
社区成员
发帖
与我相关
我的任务
分享
list.Where(x => x.Count <= input).ToList();
void Main()
{
foreach(var item in GetOutPut(5))
Console.WriteLine(item.Name+"----"+item.Count);
Console.WriteLine(new string('*',50));
foreach(var item in GetOutPut(11))
Console.WriteLine(item.Name+"----"+item.Count);
Console.WriteLine(new string('*',50));
foreach(var item in GetOutPut(16))
Console.WriteLine(item.Name+"----"+item.Count);
/*
ABB----5
**************************************************
ABB----5
FGD----10
**************************************************
ABB----5
FGD----10
ADA----10
*/
}
List<A> GetOutPut(int input)
{
var list=new List<A>{
new A{ Name="ABB", Count=5},
new A{ Name="FGD", Count=10},
new A{ Name="ADA", Count=10}
};
var result=new List<A>();
var query= list.OrderBy(x=>x.Count)
.Aggregate((m,n)=>
{
var current=result.Sum(r=>r.Count);
if(current <input){
if(m.Count+current>=input)
{
result.Add(m);
}
else if(m.Count+n.Count+current>=input)
{
result.Add(m);
result.Add(n);
}
else
{
result.Add(m);
result.Add(n);
return n;
}
}
return m;
} );
return result;
}
class A
{
public string Name{get;set;}
public int Count{get;set;}
}
List<int> list = new List<int>() { 5, 10, 12 };
List<int> resultList = new List<int>();
int number = 5;
int total = 0;
foreach (var i in list)
{
if (total >= number)
{
break;
}
total += i;
resultList.Add(i);
}
Console.WriteLine(string.Join(",", resultList));
int count;
List<A> output = new List<A>();
foreach(A item in list)
{
output.Add(item);
count += item.Count;
if(count >= input)
break;
}