Vi kan låtsas att jag har en hemgjord klass T, som har variablerna ID, A och B. Så här står det i dokumentationen:Vilken av värdena använder intersect?
Jag har två behållare;
x As List(Of T), y As List(Of T)
Jag har definierat Equals på T genom att jämföra ID-numren, jag skiter alltså i A och B i själva jämförelsen.
Nu vill jag göra:
z = x.Intersect(y)
Men bara ta A- och B-värden från x-listan.
T.ex.:
x = {{1, "a", "b"}, {2, "aa", "bb"}}, y = {{1, "c", "d"}, {3, "cc", "dd"}}
Då vill jag få ut:
z = {{1, "a", "b"}}
Men hur vet man vilket av värdena intersect tar? Eller kan man inte få en garanti där?
Alternativet är ju något i stil med
z = x.Where(Function(a) y.contains(a))
Eller någon jobbig join där man inte längre får ut originaltypen.Sv: Vilken av värdena använder intersect?
>When the object returned by this method is enumerated, Intersect enumerates first, collecting all distinct elements of that
>sequence. It then enumerates second, marking those elements that occur in both sequences. Finally, the marked >elements are yielded in the order in which they were collected.
Jag förstår det som
foreach iter in first
if not tmp.Contains(iter) then
tmp.Add(iter)
foreach iter in tmp
if second.Contans(iter) then
result.Add(iter)
return result