2017-10-05 22 views
-1

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

有人可以帮我修复这些查询,以显示所选月份的正确值吗? (例如,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(); 
    } 
} 

谢谢。

+5

你正在设置局部变量,而不是你的属性。 – juharr

+3

删除本地变量中的'int'声明。 –

+2

我得到22. [DotNetFiddle](https://dotnetfiddle.net/ZNA9eJ)。问题不在于你的LINQ。 –

回答

1

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

+1

就是这样。我无法相信我无法发现它。非常感谢你,你为我节省了很多时间和精力。祝你有美好的一天Jevgeni! – iCosmin