C# Linq聚合提供空值,而不是预期的返回列表
我试图利用linq聚合来模拟reduce行为。我需要C# Linq聚合提供空值,而不是预期的返回列表,c#,linq,aggregate,C#,Linq,Aggregate,我试图利用linq聚合来模拟reduce行为。我需要GroupingMethod返回数组列表。出于某种原因GroupingMethod无论如何都返回null。谢谢你的帮助 List<Group> groupings = GroupingMethod(new int[] {9,6,9,3,5,3,6,6,3,5,5,1,6,9,8}); static List<Group> GroupingMethod(int[] ValueList) { int
GroupingMethod
返回数组列表。出于某种原因GroupingMethod
无论如何都返回null。谢谢你的帮助
List<Group> groupings = GroupingMethod(new int[] {9,6,9,3,5,3,6,6,3,5,5,1,6,9,8});
static List<Group> GroupingMethod(int[] ValueList)
{
int groupTotal = 0;
Group newGroup = new Group();
var put = ValueList.Aggregate(new List<Group>(), (acc, x) =>
{
List<Group> polp = acc;
groupTotal = groupTotal + x;
if (groupTotal < 10)
{
newGroup.AddInt(x);
} else
{
polp.Add(newGroup);
newGroup.Clear();
groupTotal = 0;
}
return polp;
});
return put;
}
class Group
{
List<int> iGrouping = new List<int>();
public Group(int AddInt)
{
iGrouping.Add(AddInt);
}
public Group()
{
}
public void AddInt(int IntToAdd)
{
iGrouping.Add(IntToAdd);
}
public void Clear()
{
iGrouping.Clear();
}
public int CombinedGroupValue { get{return iGrouping.Sum();}}
}
List groupings=GroupingMethod(新的int[]{9,6,9,3,5,6,6,3,5,5,1,6,9,8});
静态列表分组方法(int[]ValueList)
{
int groupTotal=0;
组newGroup=新组();
var put=ValueList.Aggregate(新列表(),(acc,x)=>
{
列表polp=acc;
groupTotal=groupTotal+x;
如果(组总数<10)
{
新组。添加(x);
}否则
{
polp.Add(新集团);
newGroup.Clear();
groupTotal=0;
}
返回polp;
});
回售;
}
班级
{
列表i分组=新列表();
公共组(内部附加)
{
i分组。添加(附加项);
}
公共组()
{
}
公共无效附加项(int IntToAdd)
{
i分组。添加(IntToAdd);
}
公共空间清除()
{
iGrouping.Clear();
}
public int CombinedGroupValue{get{return iGrouping.Sum();}
}
您还没有显示您的分组方法的结尾,这让您很难提供帮助。(您已经声明了put
变量,但我们没有看到任何从GroupingMethod
返回的内容)请提供一个格式,您希望自己如何查看代码,以便您将我们置于尽可能帮助您的最佳位置。@JonSkeet我更正了它,谢谢。您确定GroupingMethod
返回空值吗?还是返回空列表?我刚刚尝试了您发布的代码,但它不返回null。它返回一个包含6个元素的列表。同样,请提供一个答案。如果您的问题实际上说明了您的意思,那么这也会有所帮助-我假设您需要一个列表
的组
,而不是数组的列表,因为这是您的代码所说的。此外,LINQ并不是对所有问题都有用,也不是更快,如果您的聚合体那么大,您应该只使用for
或foreach
。