两个列表之间的差异< object> LINQ [英] Difference between two list<object> linq

查看:85
本文介绍了两个列表之间的差异< object> LINQ的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个客户类列表

i have a two list of Client Class

public class Client 
{
    public int ClientID { get; set; }
    public string ClientName { get; set; }
    public string companyName { get; set; }
    public string companyLocation { get; set; }
}





NewClient的第一个列表

和oldClient的第二个列表



i需要三个清单

新增客户

删除客户

普通客户



i尝试了以下方式,但我希望在ClientID和公司名称上得到结果

如何添加另一个条件,以便我可以根据这两个值得到差异



我正在增加和删除价值

但我没有得到普通客户



我尝试了什么:



i尝试使用



first list for NewClient
and second for oldClient

i need Three list
Newly Added clients
Deleted Clients
Common Clients

i tried following way but i want result on ClientID and Company Name
how i can add another condition so i can get difference based on these two values

I'm Getting Added and Deleted Values
but i'm not getting Common Clients

What I have tried:

i tried with

List<Client> lstOld_Client = new List<Client>();
           List<Client> lstNew_Client = new List<Client>();


           Client C1 = new Client() { ClientName = "A", ClientID = 1, CompanyLocation = "Pune", CompanyName = "C1" };
           Client C2 = new Client() { ClientName = "A", ClientID = 1, CompanyLocation = "Pune", CompanyName = "C2" };

           lstNew_Client.Add(C1);
           lstNew_Client.Add(C2);

           lstOld_Client.Add(C1);

           var Added = lstNew_Client.Where(a => !lstOld_Client.Any(x => x.ClientID == a.ClientID && x.CompanyName == a.CompanyName)).ToList();
           var deleted = lstOld_Client.Where(a => !lstNew_Client.Any(x => x.ClientID == a.ClientID && x.CompanyName == a.CompanyName)).ToList();

           var commonElements = lstNew_Client.Where(a => lstOld_Client.Any(x => x.ClientID == a.ClientID && x.ClientName == a.ClientName)).ToList();

           var OldTemplete = lstOld_Client.Where(a => commonElements.Any(x => x.ClientID == a.ClientID && x.ClientName == a.ClientName)).FirstOrDefault();
           var NewTemplete = lstNew_Client.Where(a => commonElements.Any(x => x.ClientID == a.ClientID && x.ClientName == a.ClientName)).FirstOrDefault();

推荐答案

Common = NewClient.Where(n => oldClient.Any(o => o.ClientID == n.ClientID)).ToList();
        Deleted = oldClient.Where(o => !NewClient.Any(n => n.ClientID == o.ClientID)).ToList();
        NewlyAdded = NewClient.Where(n => !oldClient.Any(o => o.ClientID == n.ClientID)).ToList();


这篇关于两个列表之间的差异&lt; object&gt; LINQ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆