public void DbFunctionsTests_DiffYears_DateTimeOffset_Test() { this.AssertException <NotSupportedException>(() => { this.GetOrderQuery().Select(x => DbFunctions.DiffYears(this.TestDateTimeOffset, this.TestDateTimeOffset)).First(); }); }
protected MonthRanking GetMonthRankingInner(int year, int month) { var thisMonth = new DateTime(year, month, 1); var monthEndDate = thisMonth.AddMonths(1).AddDays(-1); var model = new MonthRanking(); var currentMonthData = _db.HistoryRankings.Where(h => DbFunctions.DiffMonths(h.RankDate, thisMonth) == 0 && DbFunctions.DiffYears(h.RankDate, thisMonth) == 0) .Select(h => new { HistoryRanking = h, PostCount = _db.Posts.Count(p => p.ItemId == h.BlogID && p.IdType == ItemType.Blog), Deleted = !_db.Blogs.Any(b => b.BlogID == h.BlogID) }) .ToList(); var name2nick = _blogUtil.GetNickNames(currentMonthData.Select(r => r.HistoryRanking.Author)); var currentMonthRankingData = currentMonthData.Select(h => new RankingDisplay { Author = name2nick[h.HistoryRanking.Author], BlogDate = h.HistoryRanking.BlogDate, BlogID = h.HistoryRanking.BlogID, BlogThumb = h.HistoryRanking.BlogThumb, BlogTitle = h.HistoryRanking.BlogTitle, BlogVisit = h.HistoryRanking.BlogVisit, BlogUrl = Url.Action("Details", "Blog", new { id = h.HistoryRanking.BlogID }), RankDate = h.HistoryRanking.RankDate, Rating = h.HistoryRanking.Rating, PostCount = h.PostCount, RankType = h.HistoryRanking.RankType, Deleted = h.Deleted, }); var dailyRanking = currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.RankDaily).ToList(); if (year == DateTime.Today.Year && month == DateTime.Today.Month) { var dayFromMonday = DateTime.Now.DayOfWeek - DayOfWeek.Monday; if (dayFromMonday < 0) dayFromMonday += 7; monthEndDate = DateTime.Today.AddDays(-dayFromMonday); // If don't have today's ranking, read from 24h if (!dailyRanking.Any(h => h.RankDate.Date == DateTime.Today)) { dailyRanking.AddRange(currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.Rank24h)); } } model.MonthlyRankings = currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.RankMonthly).ToList(); model.DailyRankings = dailyRanking; model.WeeklyRankings = currentMonthRankingData.Where(d => d.RankType == HistoryRanking.Type.RankWeekly && d.RankDate < monthEndDate).ToList(); return model; }
public void CreateDocument() { // выборка данных с группировкой var query = from dogs in db.DOG join dog_awards in db.DOG_AWARD on dogs.DOG_ID equals dog_awards.DOG_ID join award in db.AWARD on dog_awards.AWARD_ID equals award.AWARD_ID join breeds in db.BREED on dogs.ID_BREED equals breeds.BREED_ID group new { dogs, dog_awards, award, breeds } by new { breeds.BREED_NAME, dogs.DOG_NAME, dogs.SEX, dogs.BIRTH_DATE, award.AWARD_NAME, dog_awards.DATE_AWARD } into g orderby g.Key.BREED_NAME, g.Key.DOG_NAME select new { All = g.Key, Age = DbFunctions.DiffYears((DateTime)g.Key.BIRTH_DATE, DateTime.Now) }; //Create document WordDocument document = new WordDocument(); List <string> list = new List <string>(); List <string> breedsDog = new List <string>(); //document.EnsureMinimal(); IWSection section = document.AddSection() as WSection; //Set Margin of the section section.PageSetup.Margins.All = 72; //Set page size of the section //section.PageSetup.PageSize = new System.Drawing.SizeF(612, 792); //Create Paragraph IWParagraph paragraph = section.AddParagraph(); foreach (var el in query.ToList()) { //если такая порода не выводилась, то выводим if (!breedsDog.Contains(el.All.BREED_NAME)) { //Appends table. IWTable table = section.AddTable(); //значение строк и столбцов table.ResetCells(1, 2); //нет границ table.TableFormat.Borders.BorderType = BorderStyle.None; table.TableFormat.IsAutoResized = true; //добавляем в 1 ячейку paragraph = table[0, 0].AddParagraph(); //интервал после 6пт paragraph.ParagraphFormat.AfterSpacing = 6f; // добавляем запись с породой IWTextRange textRangeBreed = paragraph.AppendText(el.All.BREED_NAME); //стили ячейки textRangeBreed.CharacterFormat.Bold = true; textRangeBreed.CharacterFormat.FontName = "Times New Roman"; textRangeBreed.CharacterFormat.FontSize = 14; //добавляем во вторую ячейку paragraph = table[0, 1].AddParagraph(); //интервал после 6пт paragraph.ParagraphFormat.AfterSpacing = 6f; IWTextRange textRangeDate = paragraph.AppendText(DateTime.Now.ToShortDateString()); textRangeDate.CharacterFormat.Bold = true; textRangeDate.CharacterFormat.FontName = "Times New Roman"; textRangeDate.CharacterFormat.FontSize = 14; breedsDog.Add(el.All.BREED_NAME); // добаляем породу в список } if (!list.Contains(el.All.DOG_NAME)) { paragraph = section.AddParagraph(); paragraph.ParagraphFormat.AfterSpacing = 6f; IWTextRange textRange = paragraph.AppendText("Кличка: " + el.All.DOG_NAME + "; " + "\tпол: " + el.All.SEX + " " + "\tвозраст: " + el.Age + "; " + "\t[награда: " + el.All.AWARD_NAME + "; " + "\tдата: " + Convert.ToDateTime(el.All.DATE_AWARD).ToShortDateString() + "]" + "\n"); list.Add(el.All.DOG_NAME); } else { //добовляем текст к последнему созданому параграфу document.LastParagraph.AppendText("\t\t\t\t\t\t\t[награда: " + el.All.AWARD_NAME + "; " + "\tдата: " + Convert.ToDateTime(el.All.DATE_AWARD).ToShortDateString() + "]" + "\n"); } } document.Save("Result.docx", FormatType.Docx, HttpContext.ApplicationInstance.Response, HttpContentDisposition.Attachment); }