LINQ 日期问题 求指点?

czyoooo 2015-03-07 07:52:28
PRICE SALEDATE
40.0 2015-03-01
80.0 2015-03-01
110.0 2015-03-05
310.0 2015-03-05

DATETABLE内容要求LINQ分组


2015-03-01 120
2015-03-02 0
2015-03-03 0
2015-03-04 0
2015-03-05 310
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
实际上,要写好一个查询,先要把 sql 学好,了解关系运算(左外连接运算)。把 sql 学好就行了,linq 只是一个附属工具。不要本末倒置去纠结 linq 而忘记了 sql。
  • 打赏
  • 举报
回复
给你写了一个,包括测试
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();
        }
    }
}
  • 打赏
  • 举报
回复
var query = from d in table group d by d.SALEDATE into g select new {Date=g.Key,Price = g.Sum(x=>x.Price)}; 没日期的在程序里或者展示时填充0
本拉灯 2015-03-07
  • 打赏
  • 举报
回复
..光一个Linq搞不定的。 你还是用for来处理吧 简单方便

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧