Я пытаюсь объединить 2 списка, используя «Союз», поэтому я избавляюсь от дубликатов. Ниже приведен пример кода:C# Общий список вопросов союза
public class SomeDetail
{
public string SomeValue1 { get; set; }
public string SomeValue2 { get; set; }
public string SomeDate { get; set; }
}
public class SomeDetailComparer : IEqualityComparer<SomeDetail>
{
bool IEqualityComparer<SomeDetail>.Equals(SomeDetail x, SomeDetail y)
{
// Check whether the compared objects reference the same data.
if (Object.ReferenceEquals(x, y))
return true;
// Check whether any of the compared objects is null.
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.SomeValue1 == y.SomeValue1 && x.SomeValue2 == y.SomeValue2;
}
int IEqualityComparer<SomeDetail>.GetHashCode(SomeDetail obj)
{
return obj.SomeValue1.GetHashCode();
}
}
List<SomeDetail> tempList1 = new List<SomeDetail>();
List<SomeDetail> tempList2 = new List<SomeDetail>();
List<SomeDetail> detailList = tempList1.Union(tempList2, SomeDetailComparer).ToList();
Теперь вопрос можно ли использовать Союз и до сих пор получить запись, которая имеет самую последнюю дату (с использованием SomeDate собственности). Сама запись может быть либо в tempList1, либо в tempList2.
Заранее спасибо
Я использовал уникальное значение в классе SomeDetail для селектора, но не returing никаких записей. Любая помощь Пожалуйста? вар detailList = Enumerable.Join (tempList1, tempList2, элемент1 => item1.UniqueKey, элемент2 => item2.UniqueKey, (элемент1, элемент2) => (item1.SomeDate> item2.SomeDate) элемент1: элемент2) .ToList(); – Ganesha
@ Ganesha: Вы подтвердили, что есть * по крайней мере некоторые предметы с одинаковыми значениями UniqueKey? – Noldorin
О! Списки могут иметь совершенно разные значения. Если есть соответствующее значение, тогда необходимо принять во внимание дату, чтобы решить, какой из них будет выбран. Если нет соответствующего значения, значение все равно придется копировать. (как и в случае Союза) – Ganesha