У меня есть веб-приложение, которое отображает дни рождения сотрудников за текущий месяц в GridView.
Дни рождения хранятся в БД SQL Server 2008, они хранятся как полная дата-время, то есть ГГГГ-ММ-ДД ЧЧ: ММ: СС.000.
Запрос выполняется в виде.Я хочу отсортировать их по дате месяца. Пример:
John Smith Mar 1
Sally Smith Mar 5
Benny Smith Mar 16
Проблема в том, что оператор linq сортирует их по году рождения и затем по дате.Так что, если Салли родилась в 1962 году, а Джон и Бенни родились в 1988 году, то GridView будет отображаться так:
Sally Smith Mat 5
John Smith Mar 1
Benny Smith Mar 16
После копания я попытался сделать это так, что, как говорит другой вопрос, сработает.
List<BirthdayCurrentMonthView> record =
(from tab in db.BirthdayCurrentMonthViews
orderby tab.Birthday ascending
select tab).ToList();
string customFormat = "MMM d";
var ud = record.Select(d => new
{
d.FirstLast,
Formattedate = d.Birthday.ToString(customFormat)
})
.Distinct()
.OrderByDescending(d => d.FormattedDate);
this.grdBirthdays.DataSource = record;
this.grdBirthdays.DataBind();
Проблема в том, что я получаю сообщение об ошибке: «Нет перегрузки для метода« ToString », требуется 1 аргумент»
Примеры, которые я видел, делают это таким образом, поэтому я 'м в недоумении, почему он не примет это.
Если бы вы могли мне помочь, это было бы здорово.Я хочу, чтобы строки в GridView были только по дням.Благодарю.
BirthdayCurrentMonthView:
SELECT EmployeeID, ActiveDirectoryName, FirstName, LastName, FirstName + ' ' + LastName AS FirstLast, Birthday, Anniversary, IsActive
FROM dbo.Employee
WHERE (DATEPART(month, Birthday) = DATEPART(month, GETDATE()))
EmployeeID (int, not null)
ActiveDirectoryName (varchar(100), null)
FirstName (varchar(50), not null)
LastName (varchar(100), not null)
FirstLast (varchar(151), not null)
Birthday (datetime, null)
Anniversary (datetime, null)
IsActive (bit, null)
Определение дня рождения в C #:
public Nullable<global::System.DateTime> Birthday
{
get
{
return _Birthday;
}
set
{
OnBirthdayChanging(value);
ReportPropertyChanging("Birthday");
_Birthday = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Birthday");
OnBirthdayChanged();
}
}
ОБНОВЛЕНИЕ:
Решение:
List<BirthdayCurrentMonthView> record =
(from tab in db.BirthdayCurrentMonthViews
orderby ((DateTime)tab.Birthday).Day ascending
select tab).ToList();
СПАСИБО ВСЕМ !!!