亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較兩個相同類型的列表

比較兩個相同類型的列表

C#
慕容3067478 2022-12-04 11:15:58
我需要比較兩個相同類型的列表。假設我有以下類的 CurrentSC 列表(用戶當前修改的數據)和 PreviousSC 列表(從數據庫保存的數據)。public class SoftClose{    private int AID = -1;    private bool _softCloseInd;    private bool _softCloseEditInd;    private string _softClosedBy;    private DateTime _softClosedDate;    private ReferenceEnums.ActionStatus _status = ReferenceEnums.ActionStatus.NO_CHANGE;}        public static void TPostProcessAddRemoveSoftCloseStopPaymentPrefixes(IFPMServiceInternal fpmService, AgreementRevision revision)    {        List<SoftClose> psc = null;        List<SoftClose> csc = null;        string fanValue = revision.Agreement.FAN;        psc = fpmService.GetSoftCloseByFAN(fanValue);        if (psc != null)        {            //var currentprefixes = revision.Details.Where(x => x.Prefix != null).Select(y => y.Prefix).Distinct();            //Create current SoftClose object using revision object            foreach (var prefix in revision.Details.Where(x => x.Prefix != null).Select(y => y.Prefix).Distinct())            {                var newSF =                      new SoftClose                      {                          Id = -1,                          Status = ReferenceEnums.ActionStatus.NO_CHANGE,                          AgreementRevId = revision.Id,                          AgreementId = revision.Agreement.Id,                          WorkflowStatus = revision.WorkflowStatus,                          FAN = revision.Agreement.FAN,                          PID = (int)revision.Agreement.PID,                          Prefix = prefix                      };                csc.Add(newSF);            }            }        }    }假設我已將 PreviousSC 中的 D3 值更改為 CurrentSC 中的 D2?,F在我需要從數據庫中刪除 D3 值(因為 D2 值已經存在于數據庫中,我不需要插入)并將 _status 更改為 DELETE 并且我在 CurrentSC 中添加了 D4 值,而 PreviousSC 中沒有。現在我需要在數據庫中添加 D4 值并將 _softCloseInd 和 _softCloseEditInd 分配給 Y,并將 _status 更改為 ADD。如何以最佳方式實現這一目標?
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

    class Program

{

    static void Main(string[] args)

    {

        List<SoftClose> psc = new List<SoftClose>(){

             new SoftClose(){ID=1, Status = "NO_CHANGE",AID=19, Prefix = "D1"},

             new SoftClose(){ID=2, Status = "NO_CHANGE",AID=20, Prefix = "D2"},

             new SoftClose(){ID=3, Status = "NO_CHANGE",AID=21, Prefix = "D3"},

             new SoftClose(){ID=3, Status = "NO_CHANGE",AID=22, Prefix = "D9"}

                                             };


        List<SoftClose> csc = new List<SoftClose>(){

             new SoftClose(){ID=-1, Status = "NO_CHANGE",AID=19, Prefix = "D2"},

             new SoftClose(){ID=-1, Status = "NO_CHANGE",AID=20, Prefix = "D2"},

             new SoftClose(){ID=-1, Status = "NO_CHANGE",AID=21, Prefix = "D6"},

             new SoftClose(){ID=-1, Status = "NO_CHANGE",AID=22, Prefix = "D4"},

             new SoftClose(){ID=-1, Status = "NO_CHANGE",AID=23, Prefix = "D5"},

             new SoftClose(){ID=-1, Status = "NO_CHANGE",AID=24, Prefix = "D3"}

                                             };


        List<SoftClose> esc = new List<SoftClose>();


        Console.WriteLine("---------Previous List----------");

        foreach (var item in psc)

        {

            Console.WriteLine($"Id:{item.ID}, Desc1:{item.Prefix}, Status:{item.Status}");

        }

        Console.WriteLine("--------------------------------------");

        Console.WriteLine("---------Current List----------");

        foreach (var item in csc)

        {

            Console.WriteLine($"Id:{item.ID}, Desc1:{item.Prefix}, Status:{item.Status}");

        }

        Console.WriteLine("--------------------------------------");


        var addlist = csc.Where(c => psc.All(p => !p.Prefix.Equals(c.Prefix)));

        foreach (var n in addlist)

        {

            var index = csc.FindIndex(p => p.Prefix.Equals(n.Prefix));

            csc[index].Status = "ADD";

            esc.Add(csc[index]);

        }


        var deletelist = psc.Where(p => p.Status.Equals("NO_CHANGE") && !csc.Exists(c => c.Prefix.Equals(p.Prefix)));

        foreach (var n in deletelist)

        {


            var index = psc.FindIndex(c => c.Prefix.Equals(n.Prefix));

            if (psc.FindIndex(c => c.Prefix.Equals(n.Prefix)) >= 0)

            {

                psc[index].Status = "REMOVE";

                esc.Add(psc[index]);

            }

        }


        Console.WriteLine("---------Effective List----------");

        foreach (var item in esc)

        {

            Console.WriteLine($"Id:{item.ID}, Prefix:{item.Prefix}, Status:{item.Status}");

        }


        Console.ReadLine();

    }

}


public class SoftClose

{

    public int ID = -1;

    public int AID = -1;

    public int WFID = -1;

    public string Prefix;

    public DateTime SCDATE;

    public string Status;

}


查看完整回答
反對 回復 2022-12-04
  • 1 回答
  • 0 關注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號