「誰もが」 MoreLinq からの便利な DistintBy 拡張機能を知っています。これを使用して、リスト os オブジェクトを複数のプロパティで区別する必要があります (問題ありません)。このプロパティの 1 つがリストの場合、ここに私のカスタム クラスがあります。
public class WrappedNotification
{
public int ResponsibleAreaSourceId { get; set; }
public int ResponsibleAreaDestinationId { get; set; }
public List<String> EmailAddresses { get; set; }
public string GroupName { get; set; }
}
テスト ファイルで、いくつかのオブジェクトを作成し、このアイテムを区別しようとします
List<WrappedNotification> notifications = new List<WrappedNotification>();
notifications.Add(new WrappedNotification(1, 1, new List<string>() { "email" }, EvaluationStatus.Approved, "group"));
notifications.Add(new WrappedNotification(0, 1, new List<string>() { "email" }, EvaluationStatus.Approved, "group"));
notifications.Add(new WrappedNotification(0, 1, new List<string>() { "email" }, EvaluationStatus.Approved, "group"));
notifications.Add(new WrappedNotification(0, 1, new List<string>() { "email" }, EvaluationStatus.Approved, "group"));
notifications.Add(new WrappedNotification(0, 1, new List<string>() { "email" }, EvaluationStatus.Approved, "group"));
最初の項目だけが異なることに注意してください。次のコードを使用すると、これらの項目を DistinctBy することができ、結果リストには 2 つの項目が含まれ、問題ありません。
notifications = notifications.DistinctBy(m => new
{
m.ResponsibleAreaSourceId,
m.ResponsibleAreaDestinationId,
//m.EmailAddresses,
m.EvalStatus
}).ToList();
行 (//m.EmailAddresses) にコメントすると、機能せず、5 つのアイテムが返されます。どうすればこれを区別できますか?