8,497
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var source = @"40.0 2015-03-01
80.0 2015-03-01
110.0 2015-03-05
310.0 2015-03-05";
var datas = from ln in source.Split(new char[] { '\n' })
let s = ln.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
select new { PRICE = decimal.Parse(s[0]), SALEDATE = DateTime.Parse(s[1]) };
var 最早日期 = datas.Min(x => x.SALEDATE);
var 总共多少天 = datas.Max(x => x.SALEDATE).Subtract(最早日期).Days + 1;
var 日期列表 = from n in Enumerable.Range(0, 总共多少天)
select new { 日期 = 最早日期.AddDays(n) };
var 分组统计 = from x in datas
group x by x.SALEDATE into g
select new { 日期 = g.Key, 合计 = g.Sum(y => y.PRICE) };
var 左连接 = from x in 日期列表
join y in 分组统计 on x.日期 equals y.日期 into g
from z in g.DefaultIfEmpty()
select new { x.日期, 合计 = z == null ? 0 : z.合计 };
foreach (var s in 左连接)
{
Console.WriteLine("{0} {1}", s.日期, s.合计);
}
Console.WriteLine("__________按任意键结束");
Console.ReadKey();
}
}
}