簡體   English   中英

使用LINQ從日期范圍中的列表中選擇Distinct

[英]Select Distinct from list in date range with LINQ

我有一堂課未完成。

public class UnassignWork
{
    public int RecordNr { get; set; }
    public string GroupNum { get; set; }
    public string Section { get; set; }
    public string SubscriberID { get; set; }
    public decimal DedAmt { get; set; }
    public decimal CopayCoinsAmt { get; set; }
    public int BaseDed { get; set; }
    public int BaseOOP { get; set; }
    public string ClaimRespCode { get; set; }
    public string ClaimRejCode { get; set; }
    public DateTime VendorFileDate { get; set; }
    public string PackageCd { get; set; }
    public DateTime ClaimDOS { get; set; }
    public string WorkTypeCd { get; set; }
    public string AssignedTo { get; set; }
    public DateTime DateAssigned { get; set; }
}

我有一個基於班級的名單。

List<UnassignWork> UnassignedWorkList = new List<UnassignWork>();`

我如何在UnassignedWorkList中獲取VendorFileDate在開始日期和結束日期之間的項目的列表?

List<UnassignWork> dateRangeList = new List<UnassignWork>();

dateRangeList = UnassignedWorkList.Select(x=> x.VendorFileDate between startdate and enddate).ToList();

.Select()方法用於轉換結果。 要限制結果,請使用Where()

您想要類似的東西:

UnassignedWorkList.Where(x => x.VendorFileDate > startData && x.VendorFileDate < endDate)

如CodeNotFound在此處的注釋中所述,您實際上可能想要使用一個包含范圍:

UnassignedWorkList.Where(x => x.VendorFileDate >= startData && x.VendorFileDate <= endDate)

為了使結果與眾不同,您可以使用Distinct()方法,但是該方法使用默認的相等比較器,因此您需要在類上實現相等運算符才能起作用(請參閱-https://msdn.microsoft。 com / zh-CN / library / bb348436(v = vs.110).aspx )。 您可以實現自己的“ DistinctBy”方法,也可以僅使用GroupBy() -您可以在此處看到兩種方法: 通過LINQ按類的屬性進行區分

您可以使用以下方法

class Program
{
    static void Main(string[] args)
    {
        var fromDate = DateTime.Today.AddDays(2);
        var toDate = DateTime.Today.AddDays(5);
        var tempList = new List<UnassignWork>();
        tempList.Add(new UnassignWork { DateAssigned=DateTime.Today.AddDays(1)});
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(1) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(2) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(3) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(4) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(5) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(6) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(7) });
        tempList.Add(new UnassignWork { DateAssigned = DateTime.Today.AddDays(8) });

        //Lambda Operation
        var filterdList = tempList.Where(e => e.DateAssigned >= fromDate && e.DateAssigned <= toDate);

        //Linq Operation
        var filterdList2 = (from t in tempList
                            where t.DateAssigned >= fromDate && t.DateAssigned <= toDate
                            select t);
    }
}
public class UnassignWork
{
    public int RecordNr { get; set; }
    public string GroupNum { get; set; }
    public string Section { get; set; }
    public string SubscriberID { get; set; }
    public decimal DedAmt { get; set; }
    public decimal CopayCoinsAmt { get; set; }
    public int BaseDed { get; set; }
    public int BaseOOP { get; set; }
    public string ClaimRespCode { get; set; }
    public string ClaimRejCode { get; set; }
    public DateTime VendorFileDate { get; set; }
    public string PackageCd { get; set; }
    public DateTime ClaimDOS { get; set; }
    public string WorkTypeCd { get; set; }
    public string AssignedTo { get; set; }
    public DateTime DateAssigned { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM