C# 使用linq对更改的字段进行排序
我有一个使用C#的linq查询,希望在更改的字段上排序。该字段是表中定义为YYYYMM的部分日期字段。但是,我希望它在我的中继器中显示为, MM/YYYY,但需要将其排序为YYYYMM。下面是代码,GrantMonthID是相关字段。中继器以MM/YYYY顺序显示数据 多谢各位C# 使用linq对更改的字段进行排序,c#,linq,C#,Linq,我有一个使用C#的linq查询,希望在更改的字段上排序。该字段是表中定义为YYYYMM的部分日期字段。但是,我希望它在我的中继器中显示为, MM/YYYY,但需要将其排序为YYYYMM。下面是代码,GrantMonthID是相关字段。中继器以MM/YYYY顺序显示数据 多谢各位 var linqQuery = from nn in grantsReceivedDetailList where (nn.ArrearAuditID == Conv
var linqQuery = from nn in grantsReceivedDetailList
where (nn.ArrearAuditID == Convert.ToInt32(AdminBasePage.ArrearAuditId))
select
new
{
nn.GrantsReceivedID,
nn.PayeeMPINumber,
Firstname = participantRepository.GetParticipantDetailsbyMemberParticipantIndex(Convert.ToInt32(nn.PayeeMPINumber)).FirstName + " " +
participantRepository.GetParticipantDetailsbyMemberParticipantIndex(Convert.ToInt32(nn.PayeeMPINumber)).LastName,
nn.IVANumber,
GrantMonthID = nn.GrantMonthID.ToString().Substring(4, 2) + "/" + nn.GrantMonthID.ToString().Substring(0, 4),
nn.GrantAmount,
nn.Comments
};
linqQuery = linqQuery.OrderByDescending(y => y.GrantMonthID);
// Execute the linq query and databind
grantListRepeater.DataSource = linqQuery;
grantListRepeater.DataBind();
只需创建一个要排序的属性和一个要绑定到的属性:
var query = from x in someList
select new
{
SortField = FormatForSort(x.Field),
DisplayField = FormatForDisplay(x.Field)
};
query = query.OrderBy(x => x.SortField);
或者,按日期选择它,并在中继器中以您想要的方式格式化它,而不是使用LINQ,因为这更多是一个视图问题。只需创建一个要排序的属性和一个要绑定到的属性:
var query = from x in someList
select new
{
SortField = FormatForSort(x.Field),
DisplayField = FormatForDisplay(x.Field)
};
query = query.OrderBy(x => x.SortField);
或者,按日期选择它,并在中继器中按您想要的方式格式化,而不是使用LINQ,因为这更像是一个视图问题。添加到包含原始数据库日期的匿名类型字段:
var linqQuery =
from nn in grantsReceivedDetailList
where (nn.ArrearAuditID == Convert.ToInt32(AdminBasePage.ArrearAuditId))
select new {
nn.GrantsReceivedID,
nn.PayeeMPINumber,
Firstname = participantRepository.GetParticipantDetailsbyMemberParticipantIndex(Convert.ToInt32(nn.PayeeMPINumber)).FirstName + " " +
participantRepository.GetParticipantDetailsbyMemberParticipantIndex(Convert.ToInt32(nn.PayeeMPINumber)).LastName,
nn.IVANumber,
GrantMonthID = nn.GrantMonthID.ToString().Substring(4, 2) + "/" +
nn.GrantMonthID.ToString().Substring(0, 4),
nn.GrantAmount,
nn.Comments,
GrantMonthIdOriginal = nn.GrantMonthID // this field
};
并按此字段排序:
linqQuery = linqQuery.OrderByDescending(y => y.GrantMonthIdOriginal);
grantListRepeater.DataSource = linqQuery;
grantListRepeater.DataBind();
添加到包含原始数据库日期的匿名类型字段:
var linqQuery =
from nn in grantsReceivedDetailList
where (nn.ArrearAuditID == Convert.ToInt32(AdminBasePage.ArrearAuditId))
select new {
nn.GrantsReceivedID,
nn.PayeeMPINumber,
Firstname = participantRepository.GetParticipantDetailsbyMemberParticipantIndex(Convert.ToInt32(nn.PayeeMPINumber)).FirstName + " " +
participantRepository.GetParticipantDetailsbyMemberParticipantIndex(Convert.ToInt32(nn.PayeeMPINumber)).LastName,
nn.IVANumber,
GrantMonthID = nn.GrantMonthID.ToString().Substring(4, 2) + "/" +
nn.GrantMonthID.ToString().Substring(0, 4),
nn.GrantAmount,
nn.Comments,
GrantMonthIdOriginal = nn.GrantMonthID // this field
};
并按此字段排序:
linqQuery = linqQuery.OrderByDescending(y => y.GrantMonthIdOriginal);
grantListRepeater.DataSource = linqQuery;
grantListRepeater.DataBind();
工作起来很有魅力。这个网站(和你)太棒了。我很快就联系上了,对不起。此代码更改仍按MM/YYYY顺序显示。我需要YYYYMM订单。thx@KentE不,如果您仍然有MM/YYYY订单,那么您在OrderByDescending运算符中选择了错误的字段。做这些事情的时间太多了。再次感谢,很有魅力。这个网站(和你)太棒了。我很快就联系上了,对不起。此代码更改仍按MM/YYYY顺序显示。我需要YYYYMM订单。thx@KentE不,如果您仍然有MM/YYYY订单,那么您在OrderByDescending运算符中选择了错误的字段。做这些事情的时间太多了。再次感谢。请尽快联系,对不起。此代码更改仍按MM/YYYY顺序显示。我需要YYYYMM订单。你能详细解释一下这句话吗:对不起,我很快就跟你说了。此代码更改仍按MM/YYYY顺序显示。我需要YYYYMM订单。你能详细解释一下这个短语吗