两个列表之间的差异< object> LINQ [英] Difference between two list<object> linq
本文介绍了两个列表之间的差异< 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();
这篇关于两个列表之间的差异< object> LINQ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文