我有一个SQL代码像;LINQ RowNumber,Aggregate(Sum)和GroupBy
Select GroupName, sum(LineAmount) as Total, WeekNumber,
ROW_NUMBER() over (partition by WeekNumber order by sum(LineAmount) desc) as RowNum
from
Invoices
where
month(InvoiceDate)=month(getdate())
group by
GroupName,WeekNumber
我想将其转换为LINQ,但没有运气。我正在使用LINQ来对象。任何帮助,将不胜感激。 TIA
编辑:这是一些示例数据和预期结果。
public class Invoice
{
public string GroupName { get; set; }
public int LineAmount { get; set; }
public int WeekNum { get; set; }
}
List<Invoice> theData = new List<Invoice>();
theData.Add(new Invoice { GroupName = "A", LineAmount = 1, WeekNum = 1});
theData.Add(new Invoice { GroupName = "A", LineAmount = 2, WeekNum = 1 });
theData.Add(new Invoice { GroupName = "A", LineAmount = 3, WeekNum = 1 });
theData.Add(new Invoice { GroupName = "A", LineAmount = 2, WeekNum = 2 });
theData.Add(new Invoice { GroupName = "A", LineAmount = 3, WeekNum = 2 });
theData.Add(new Invoice { GroupName = "A", LineAmount = 4, WeekNum = 2 });
theData.Add(new Invoice { GroupName = "B", LineAmount = 4, WeekNum = 1 });
theData.Add(new Invoice { GroupName = "B", LineAmount = 3, WeekNum = 1 });
theData.Add(new Invoice { GroupName = "B", LineAmount = 7, WeekNum = 2 });
theData.Add(new Invoice { GroupName = "B", LineAmount = 6, WeekNum = 2 });
theData.Add(new Invoice { GroupName = "B", LineAmount = 5, WeekNum = 2 });
我已删除“其中”从我第一次查询其此刻不存在问题。
'RowNum = i'应该是'RowNum = i + 1'来给出预期的结果。 – sloth 2012-08-08 07:18:33
谢谢Serg,你的解决方案给了我预期的结果。我已经找到了一个解决方案。我不知道哪一个表现最好!任何想法将不胜感激。 – bsaglamtimur 2012-08-08 08:20:41
@bsaglamtimur他们或多或少相同,而选择是个人喜好和可读性的问题。就我而言,我不喜欢嵌套查询。 – 2012-08-08 08:30:49