【问题标题】:Why are my LINQ queries returning zero? [closed]为什么我的 LINQ 查询返回零? [关闭]
【发布时间】:2017-10-05 00:46:19
【问题描述】:

我是 LINQ 的新手,无论我如何努力让这两个查询工作,我总是以零作为结果。我已经尝试了一切来计算一个月的工作日和总天数。 MDate 绑定到日期选择器,BusinessDays 绑定到文本框,TotalDaysInMonth 绑定到另一个文本框。

有人可以帮我解决这些查询以显示所选月份的正确值吗? (例如 9 月:20 个工作日,30 天)

public class LocationViewModel : INotifyPropertyChanged
{

    public LocationViewModel()
    {    
        SetBusinessDays();
        SetTotalDaysInMonth();
    }

    public DateTime mDate = DateTime.Now;

    public DateTime MDate
    {
        get { return mDate; }
        set
        {
            if (value == mDate)
            {
                return;
            }
            else
            {
                mDate = value;
                OnPropertyChanged("MDate");

                SetBusinessDays();
                SetTotalDaysInMonth();
            }
        }
    }

    int _businessDays;

    public int BusinessDays
    {
        get { return _businessDays; }
        set
        {
            _businessDays = value;
            OnPropertyChanged("BusinessDays");
        }
    }

    int _totalDaysInMonth;

    public int TotalDaysInMonth
    {
        get { return _totalDaysInMonth; }
        set
        {
            _totalDaysInMonth = value;
            OnPropertyChanged("TotalDaysInMonth");
        }
    }


    private void SetBusinessDays()

    {
        int BusinessDays = Enumerable.Range(1, DateTime.DaysInMonth(MDate.Year, MDate.Month))
                            .Select(day => new DateTime(MDate.Year, MDate.Month, day))
                            .Count(d => d.DayOfWeek != DayOfWeek.Sunday &&
                                        d.DayOfWeek != DayOfWeek.Saturday);
    }

    private void SetTotalDaysInMonth()
    {
        int TotalDaysInMonth = Enumerable.Range(1, DateTime.DaysInMonth(MDate.Year, MDate.Month))
                            .Select(day => new DateTime(MDate.Year, MDate.Month, day))
                            .Count();
    }
}

谢谢。

【问题讨论】:

  • 您设置的是局部变量,而不是您的属性。
  • 删除局部变量中的int 声明。
  • 我得到 22。DotNetFiddle。问题不在于您的 LINQ。
  • 正如@Ephraim 所说,您在SetBusinessDaysSetTotalDaysInMonth 中有int BusinessDays = ...int TotalDaysInMonth = ...。您基本上是在声明一个局部变量,而不是将值分配给 BusinessDaysTotalDaysInMonth 属性。删除int

标签: c# wpf linq


【解决方案1】:

在您的两个方法中,您都在声明一个局部变量,而不是设置您的属性。在 C# 中,您无需在访问属性时指定类型。删除方法中的两个 int 文字。

【讨论】:

  • 就是这样。我不敢相信我看不到它。非常感谢,您为我节省了很多时间和精力。祝你有美好的一天!
猜你喜欢
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
相关资源
最近更新 更多