J'ai une affectation où je dois joindre deux listes du même type (Client). Ils ont des entrées similaires que je dois éviter les répétitions.Joindre deux listes à l'aide de requêtes linq - C#
Ceci est mon client classe:
class Customer
{
private String _fName, _lName;
private int _age, _cusIndex;
private float _expenses;
public Customer(String fName, String lName, int age, float expenses, int cusIndex)
{
this._fName = fName;
this._lName = lName;
this._age = age;
this._expenses = expenses;
this._cusIndex = cusIndex;
}
}
J'ai donc deux List<Customer>
s nommés customers1
et customers2
. Je dois joindre ces deux sans utiliser Collections méthodes (comme customer1.Union(customer2).ToList();
Mais l'utilisation de requêtes LINQ
Voici le requête LINQ je l'ai écrit.
var joined = (from c1 in customers1
join c2 in customers2
on c1.CusIndex equals c2.CusIndex
select new {c1, c2});
Mais cela me donne le membre qui apparaissent sur les deux J'ai besoin de tout, sans répétition Existe-t-il une solution ???
1. Remplacer [Equal] (https://msdn.microsoft.com/library/ms173147.aspx) et [GetHashCode] (http://blogs.msdn.com/b/ericlippert/archive/2011/02 /28/guidelines-and-rules-for-gethashcode.aspx) dans votre classe 'Customer' (pour indiquer que deux clients sont considérés égaux, si leur 'CusIndex' est égal). 2. 'join = clients1.Concat (clients2) .Distinct();' – Corak
Il semble qu'il n'y ait pas d'équivalent requête pour la méthode 'Union'. Quelle est la raison de ne pas utiliser la méthode 'Union'? –
@Corak Oui. J'ai déjà fait ça. Mais le problème est, cette requête renvoie les clients qui sont dans les deux listes. Mais j'ai besoin de tout le monde –