1

次のコードがあります

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestSomethingRelatedToLINQ
{
    class Person : IEqualityComparer<Person>
    {
        internal int personID;
        internal string PersonName;


        public bool Equals(Person x, Person y)
        {
            return x.personID == y.personID;
        }
        public int GetHashCode(Person obj)
        {
            return obj.personID.GetHashCode();
        }


    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Person> list1 = new List<Person>{            
            new Person{personID = 1 , PersonName = "Ali"},
            new Person{personID = 2 , PersonName = "Ali1"},
            new Person{personID = 3 , PersonName = "Ali2"}            
            };

            List<Person> list2 = new List<Person>{            
            new Person{personID = 4 , PersonName = "Habib1"},
            new Person{personID = 2 , PersonName = "Habib2"},
            new Person{personID = 5 , PersonName = "Habib3"}            
            };           



        }
    }
}

list1 のすべての要素を選択する必要があり、 personID を持たない list2 のすべての要素が List1 に存在し、結果を personID で並べ替える必要があります

新しい出力は次のようになります

1, Ali 
2, Ali1 
3, Ali2
4, Habib1
5, Habib3

それを使用する方法についてのアイデア

4

1 に答える 1

2

まず、リスト2をリスト1に追加するように、LINQConcatを呼び出します。

次に、LINQ Distinctを呼び出します。これにより、重複しているエントリ(前者または後者)が削除されます。

このサイトでは、使用するクラスを提案しています。IEqualityComparerインターフェイスを実装するだけです。

于 2012-04-08T13:08:34.677 に答える