Чтобы это работало с EF и SQL, вы можете просто вычислить дату для вычисления числа «периодов» для группировки. По сути, вы конвертируете каждую дату в месяц, смещенное на 16-е число, и добавляете смещение для года:
var result = await db.Orders.Where(o => o.OrderDate > date)
.GroupBy(o => o.OrderDate.Month + 12*(o.OrderDate.Year - date.Year) - (o.OrderDate.Day >= 16 ? 0 : 1))
.ToListAsync();
Для @stuartd, вот как вернуть период для каждой группы: [113 ]
var resultp = result.Select(r => new {
PeriodBegin = new DateTime(date.Year + r.Key / 12 - (r.Key % 12 == 0 ? 1 : 0), r.Key % 12 == 0 ? 12 : r.key % 12, 16),
PeriodEnd = new DateTime(date.Year + r.Key / 12, r.Key % 12 + 1, 15),
Orders = r.ToList()
}).ToList();
Вы имеете:
myArray = $('testClass');
alert(myArray.count);
Вы хотите:
myArray = $('.testClass');
alert(myArray.length);
Заметьте, во-первых. для testClass. Затем myArray является объектом JavaScript, таким образом, у Вас есть доступ к ключу длины.
Код, что Вы предоставили возвратам повторяемый объект jQuery, но не массив. Кроме того, Вы сделали ошибку в своем селекторе класса.
Для проверки размер того, который объект jQuery, можно использовать:
var $j_object = $(".testClass");
alert($j_object.size());
Для цикличного выполнения по тому объекту можно использовать каждого () функция:
var $j_object = $(".testClass");
$j_object.each( function(i) { doSomethingHere(); } );
Проверьте документацию jQuery для получения дополнительной информации о том, как использовать каждого ().
Еще одно примечание. Если Вы хотите сделать что-то с объектом DOM в каждой функции, можно обратиться к 'этому'. Для получения jQuery возражают от объекта DOM, можно использовать $ (это).
Кроме того, знак $ является абсолютно дополнительным, но может помочь различать объекты jQuery и другие переменные, такие как те, которые обозначают dom элементы.
Можно сделать это, не используя массив:
$('.testClass').length
Это все.