LINQ を使用した 2 つのオブジェクト リストの結合
データ管理などのシナリオでは、複数のオブジェクト リストを結合する必要がある状況が発生することがあります。 Person オブジェクトの 2 つのリストがある特定のインスタンスを考えてみましょう:
<br>class Person<br>{</p> <pre class="brush:php;toolbar:false">string Name; int Value; int Change;
}
List< ;人> list1;
リスト<人> list2;
私たちの目標は、これら 2 つのリストを新しい List
Linq Union メソッドの使用
これらのリストをマージする簡単な方法の 1 つは、Linq 拡張メソッド Union を使用することです。 。このメソッドは 2 つのシーケンスの要素を結合し、新しいシーケンスを返します。例:
<br>varmergedList = list1.Union(list2).ToList();<br>
デフォルトでは、Union メソッドPerson クラスの Equals メソッドと GetHashCode メソッドを使用して、重複する要素を特定します。ただし、Name などの特定のプロパティに基づいて人を比較する場合は、Person クラスでこれらのメソッドをオーバーライドできます。
/// <summary> /// Checks if the provided object is equal to the current Person /// </summary> /// <param name="obj">Object to compare to the current Person</param> /// <returns>True if equal, false if not</returns> public override bool Equals(object obj) { // Try to cast the object to compare to to be a Person var person = obj as Person; return Equals(person); } /// <summary> /// Returns an identifier for this instance /// </summary> public override int GetHashCode() { return Name.GetHashCode(); } /// <summary> /// Checks if the provided Person is equal to the current Person /// </summary> /// <param name="personToCompareTo">Person to compare to the current person</param> /// <returns>True if equal, false if not</returns> public bool Equals(Person personToCompareTo) { // Check if person is being compared to a non person. In that case always return false. if (personToCompareTo == null) return false; // If the person to compare to does not have a Name assigned yet, we can't define if it's the same. Return false. if (string.IsNullOrEmpty(personToCompareTo.Name) return false; // Check if both person objects contain the same Name. In that case they're assumed equal. return Name.Equals(personToCompareTo.Name); }
あるいは、IEqualityComparer を実装する比較クラスを作成することもできます。インターフェイスを使用して独自の比較基準を定義します。その後、この比較子を Union メソッドの 2 番目のパラメーターとして指定できます。
以上がLINQ を使用して 2 つの person オブジェクトのリストをマージし、値を結合して変更を計算することで重複を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。