2017-10-05 1 views
-1

저는 LINQ에 익숙하지 않습니다. 그리고이 두 쿼리를 작동 시키려 할 때마다 결과가 제로가됩니다. 한 달 안에 영업일 수와 총 일수를 계산하기 위해 모든 것을 시도했습니다. MDate는 datepicker, BusinessDays는 텍스트 상자, TotalDaysInMonth는 다른 텍스트 상자에 바인딩됩니다.LINQ 쿼리가 0을 반환하는 이유는 무엇입니까?

내가 선택한 달에 적합한 값을 표시하기 위해 이러한 쿼리를 수정하도록 도움을 줄 수 있습니까? (예 : 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

관련 문제