Tôi đang cố gỡ lỗi phương thức của mình nhưng tôi không biết có gì sai với nó.Trình tự không chứa lỗi phần tử phù hợp trong Tuyên bố LINQ
Có những lúc nó phát ra lỗi và đôi khi không sao. Tôi không biết có gì sai.
Dưới đây là phương pháp của tôi:
private void GetWorkingWeek(int month, int year)
{
var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
var daysInMonth = Enumerable.Range(1, cal.GetDaysInMonth(year, month));
var listOfWorkWeeks = daysInMonth
.Select(day => new DateTime(year, month, day))
.GroupBy(d => cal.GetWeekOfYear(d, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday))
.Select(g => Tuple.Create(g.Key, g.First(), g.Last(d => d.DayOfWeek != DayOfWeek.Saturday && d.DayOfWeek != DayOfWeek.Sunday)))
.ToList();
foreach (var weekGroup in listOfWorkWeeks)
{
Console.WriteLine("Week{0} = {1} {2} to {1} {3}"
, weekNum++
, System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month)
, weekGroup.Item2.Day
, weekGroup.Item3.Day);
}
}
Đây là dòng lỗi ở đâu xuất hiện:
var listOfWorkWeeks = daysInMonth
.Select(day => new DateTime(year, month, day))
.GroupBy(d => cal.GetWeekOfYear(d, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday))
.Select(g => Tuple.Create(g.Key, g.First(), g.Last(d => d.DayOfWeek != DayOfWeek.Saturday && d.DayOfWeek != DayOfWeek.Sunday)))
.ToList();
Đây là lỗi:
InvalidOperationException : Sequence contains no matching element
Tôi đoán đó là phương thức First() hoặc Last() ném lỗi. Bạn có thể thử thay thế FirstOrDefault() và LastOrDefault() mà thay vào đó sẽ trả về null cho một tập dữ liệu rỗng thay vì kích hoạt ngoại lệ. –
bản sao có thể có của [Trình tự không chứa phần tử phù hợp] (http://stackoverflow.com/questions/3994336/sequence-contains-no-matching-element) – demongolem