LINQ查询过滤然后到模型

时间:2016-10-12 12:40:32

标签: c# linq

我该如何正确地做到这一点?

这是失败的,因为来自RR2的m中不存在schedule-on。

        var RR = (from m in DataContext.csrcallds
                  where m.scheduledon >= earliestDate
                  && m.scheduledon <= objdate1.DateStart
                  && m.assignto == 113
                  && (SqlMethods.DateDiffDay(m.scheduledon, m.completedon) > 5)
                  select m
                   );

        var RR2 = RR.Select(x => (GetBusinessDays((DateTime)x.scheduledon, (DateTime)x.completedon)) > 5).ToList());

        var RnR = (from m in RR2
                   group m by new { m.scheduledon.Value.Year, m.scheduledon.Value.Month } into p
                   orderby p.Key.Year ascending, p.Key.Month ascending
                   select new Date1()
                   {
                       theDate = DateTime.Parse($"{p.Key.Month} - {p.Key.Year}"),
                       theCount = p.Count(),
                       theString = $"{p.Key.Month} - {p.Key.Year}"
                   });

我正在尝试查询所有结果。 然后使用我的GetBusinessDay功能过滤掉我不需要的功能,在5个工作日内只收集记录。 然后将结果放入名为Date1的模型中。

我试图这样做是因为我不能在LINQ查询中使用GetBusinessDays。 所以我试图在SQL之外过滤它,然后再次对记录进行分组。

如何完成此任务?

2 个答案:

答案 0 :(得分:0)

您可以将其添加到SQL查询中以过滤周末时间。

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)

或者这个

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'

或者,如果你必须坚持LINQ,请尝试这里概述的想法: Linq query DateTime.Date.DayOfWeek

DateTime firstSunday = new DateTime(1753, 1, 7); 
var bookings = from b in this.db.Bookings 
               where EntityFunctions.DiffDays(firstSunday, b.StartDateTime) % 7 == 1 
               select b;

答案 1 :(得分:0)

使用函数workdays服务器端解决: https://stackoverflow.com/a/252532/6157660

允许我进行简单的LINQ查询,并提供我需要的内容。

我编辑了函数以从DateDiff中删除+1。因为同一天应该是0而不是1。

谢谢你们的帮助!

print