使用LINQ过滤列表

时间:2011-07-21 13:57:04

标签: linq

您好我有一个名为EmpowerCalendarCode的类:

它包含以下字段:CalendarCode,CalendarName,EffectiveStartDate,EmpowerTaxType,LongAgencyCode,TaxDepositFrequencyBaseTypeID。

我想基于LongAgenyCode和EmpowerTaxType过滤此列表。所以我们说:

public IList<EmpowerCalendarCode> GetEmpowerCalendarCodes(string longAgencyCode, string EmpowerTaxType)
{

     //todo:

}

如果我为同一个longAgencyCode获得了多个EmpowerCalendarCode,EmpowerTaxType具有相同的TaxDepositFrequencyBaseTypeID,那么我应该选择具有最新EffectiveStartDate的那个。如何编写LINQ查询。我很好,即使我们必须做两个三个查询才能得到结果。

任何想法和建议都表示赞赏!

2 个答案:

答案 0 :(得分:2)

return yourSource.Where(x => x.LongAgencyCode == longAgencyCode
                             && x.EmpowerTaxType == empowerTaxType)
                 .GroupBy(x => x.TaxDepositFrequencyBaseTypeID,
                               (k, g) => g.OrderByDescending(x => x.EffectiveStartDate)
                                          .First())
                 .ToList();

答案 1 :(得分:0)

试试这个:

ctx.EmpowerCalendarCodes
.Where(a=>a.LongAgencyCode == longAgencyCode && a.EmpowerTaxType == EmpowerTaxType)
.OrderByDescending(a=>a.EffectiveStartDate)
.FirstOrDefault();