oLinq olsun değerler birden fazla liste arasında paylaşılmayan
var lists = new List<List<int>> {
new List<int> { 1, 2, 3, 4 },
new List<int> { 2, 3, 4, 5, 8 },
new List<int> { 2, 3, 4, 5, 9, 9 },
new List<int> { 2, 3, 3, 4, 9, 10 }
};
public IEnumerable<T> GetNonShared(this IEnumerable<IEnumerable<T>> lists)
{
//...fast algorithm here
}
böylece
o
böylecelists.GetNonShared();
döner 1, 5, 8, 9, 10
Ben
public IEnumerable<T> GetNonShared(this IEnumerable<IEnumerable<T>> lists)
{
return list.SelectMany(item => item)
.Except(lists.Aggregate((a, b) => a.Intersect(b));
}
vardı Ama bu verimli olsaydı ben emin değildi. Sipariş önemli değil. Teşekkürler!
için HashSet ve SymmetricExceptWith kullanabilir? Sorun bu değil. Sorun şu: doğru olan semantik nedir ve performans gereksinimlerinizi karşılar mı? Uygulamanızın semantiği doğrudur. Performans gereksinimlerinizi karşılayıp karşılamadığını yalnızca siz bilirsiniz. – jason