c# - 使用 Linq 从表中计算星期一、星期二等的数量

标签 c# linq

我试图弄清楚如何使用 Linq 和 C# 计算表中星期一、星期二等的数量

这是我的示例数据:

Status      StatusDate

DELIVRD     2015-04-16 11:57:47.000

DELIVRD     2015-04-16 13:02:57.000

我知道我需要使用分组依据将相同的星期一、星期二等分组为 1。

我的尝试:

var mondays = rad.SMSSentItems
    .Where(x => (x.StatusDate.Value.DayOfWeek == DayOfWeek.Monday) 
             && (x.Status == "DELIVRD"))
    .ToList()
    .Count;

最佳答案

您需要按所需的状态 (DELIVRD) 进行过滤,然后按状态日期的 DayOfWeek 进行分组

var weekDays = rad.SMSSentItems
    .Where(x => x.Status == "DELIVRD")
    .AsEnumerable()
    .GroupBy(x => x.StatusDate.Value.DayOfWeek)
    .Select(g => {
        //Total items sent on this day of the week
        var totalItemCount = g.Count();
        //Total number if this distinct day of the week
        var totalNumberOfDays = g.Select(x => x.StatusDate.Value.Date).Distinct().Count();
        return new {
            DayOfWeek = g.Key,
            TotalItemCount = totalItemCount,
            TotalNumberOfDays = totalNumberOfDays,
            AverageItemPerDay = totalItemCount / totalNumberOfDays
        };
    })
    .ToList();

关于c# - 使用 Linq 从表中计算星期一、星期二等的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47955326/

相关文章:

c# - WPF 组合框在选择后丢失文本

c# - 没有等待的异步方法与 Task.FromResult

c# - 左侧对象不是一行中的空运算符

c# - Expression.Call groupBy 然后选择?

c# - LINQ 找到最近的坐标

c# - 从动态类型创建泛型类的实例

linq - 如何让 Resharper 转换回 foreach 循环

c# - 可枚举包含可枚举

c# - 包含数字和字母的orderby()

c# - 创建没有互操作性和模板(带或不带行和列跨度)的 Excel