我有一个数据集(汽车):
Brand DateSold Amount Bought/Sold
Toyota 06/07/2015 18.5 Bought
BMW 01/01/2016 25.15 Sold
Mercedes 06/06/2016 20.75 Bought
我想按年份分组并返回金额的总和,即:
Year Amount
2015 -18.5
2016 4.4
并将其输出到列表框中。
我可以在没有买入/卖出条件的情况下求和:
var AmountsByYear = cars.GroupBy(i => i.Date.Year)
.Select(g => new {
Year = g.Key,
Total = g.Sum(i => i.Amount)
}).ToList();
lstAmountsByYear.DataSource = AmountsByYear;
考虑创建汽车
的扩展方法,将[Amount
]的组合转换为
的正值或负值:
public static decimal ToProperAmountValue(this Car car)
{
return car.IsCarBought ? -car.Amount : car.Amount;
}
// TODO: invent proper method name
此外,请使用已经为您执行选择的正确重载ENumable. GroupBy:
var amountsByYear = cars.GroupBy(
// KeySelector: Group Cars into Groups of same year
car => car.Date.Year)
// ResultSelector: take the Key and the Cars with this Key to make a new object
(year, carsInThisYear => new
{
Year = year,
Total = carsInThisYear.Sum(car => car.ToProperAmountValue())
})
.ToList();
由于您没有详细说明“买入/卖出”字段在数据结构中是如何定义的,我建议您使用枚举。例如,
public class Car
{
public string Brand;
public DateTime Date;
public double Amount;
public BusinessType BusinessType;
}
public enum BusinessType
{
Bought = -1,
Sold = 1
}
这将使您能够以最小的更改使用查询,如下所示,以获得预期结果。
var AmountsByYear = cars.GroupBy(i => i.Date.Year)
.Select(g => new {
Year = g.Key,
Total = g.Sum(i => i.Amount*(int)i.BusinessType)
}).ToList();
输入数据,
var cars = new List<Car>
{
new Car{Brand="Toyota", Date = new DateTime(2015,06,07),Amount=18.5,BusinessType=BusinessType.Bought},
new Car{Brand="BMW", Date = new DateTime(2016,01,01),Amount=25.15,BusinessType=BusinessType.Sold},
new Car{Brand="Mercedes", Date = new DateTime(2016,06,06),Amount=20.75,BusinessType=BusinessType.Bought},
};
输出
问题内容: 我有一个像这样的数组: 现在,我想按某种条件过滤该数组,只保留值等于2的元素,并删除值不等于2的所有元素。 所以我的预期结果数组将是: 注意:我想保留原始数组中的键。 如何使用PHP做到这一点?有内置功能吗? 问题答案:
对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个:
我有两个PrimeFaces SelectOne菜单组件。当第一个组件设置为某个值时,我需要第二个组件成为必需的。我使用Ajax和绑定在提交第一个组件时更新第二个组件,以便用户在第二个组件的标签旁边看到所需的“*”。那部分很简单。 以下是(稍微简化的)代码: 它工作正常,但以下情况除外: 用户从foo中选择值1。结果:Bean用foo更新 显然,这是工作,因为它应该每个JSF。然而,我担心这会导致
本文向大家介绍怎样有条件地渲染组件?相关面试题,主要包含被问及怎样有条件地渲染组件?时的应答技巧和注意事项,需要的朋友参考一下 or
像这样,我想通过linq获得who行
问题内容: 我有一个组件,有时有时需要呈现为和,有时需要呈现为。在我读来确定这一点,是。 如果存在,则需要将组件包装在中。否则,它将仅呈现为。 可能? 这是我现在正在做的,但是感觉可以简化: 更新: 这是最终的锁定。感谢您的提示,@ Sulthan! 问题答案: 只需使用一个变量。 或者,您可以使用辅助函数来呈现内容。JSX和其他代码一样。如果要减少重复,请使用函数和变量。