LINQ will grad nicht so wie ich will.
ich habe eine List<String> mit evtl. doppelten Werten.
Diese will ich per LINQ filtern kriege es aber nicht hin.
Jmd nen Codeschnipsel f�r den Fall ?
Danke und Gru�
var duplicates = (from item in allItems
group item by item into g
from groupItem in g
where g.Count() > 1
select g.Key).Distinct();
Die erste Funktion liefert jeden Eintrag nur einmal zur�ck und die zweite
ermittelt, welche Eintr�ge mehrfach vorkommen.
"Pawel Warmuth" <sp...@root.de> schrieb im Newsbeitrag
news:eW3NGlom...@TK2MSFTNGP06.phx.gbl...
Danke zusammen :-)
Gr��e
"Pawel Warmuth" <sp...@root.de> schrieb im Newsbeitrag
news:eW3NGlom...@TK2MSFTNGP06.phx.gbl...
> var duplicates = (from item in allItems
> group item by item into g
> !!! from groupItem in g ???
> where g.Count() > 1
> select g.Key).Distinct();
Die mittlere Zeile wirkt sich aber nicht gerade positiv auf die
Geschwindigkeit aus, und scheint mir total unn�tz -- �bersehe ich etwas
essentielles dabei?
--
/\/\arkus.
Das abschlie�ende Distinct() ist ohne "from groupItem in g" nat�rlich auch
unn�tig.
--
/\/\arkus.
Genau in diese Kerbe schl�gt auch das Thema Performance: �ber wie viele
Eintr�ge in der generischen Liste und �ber wie viele Ausf�hrungen der Query
reden wir denn? Wenn dein Code hinterher noch mehrfach gefundene Duplikate
per Loop zusammenf�hren muss, musst du diese Zeit ja in die Betrachtung mit
einflie�en lassen.
Wir k�nnen die Query gern noch etwas performanceoptimieren und genau auf
deinen Anwendungsfall ausrichten, aber dann m�sstest du noch ein paar mehr
Informationen preisgeben als "LINQ-Query zum Auffinden von Duplikaten in
List<string> gesucht". Denn eines unterschreibe ich blind. LINQ ist ein
m�chtiges Tool, aber sollte angewandt werden, wenn es sinnvoll ist und
i.d.R. auch nur f�r den speziellen Anwendungsfall.
"Markus Springweiler" <spr...@gmx.de> schrieb im Newsbeitrag
news:1tjccvdj...@sihv.de...
Es ging dir ja eher um die Projektion als um die Gruppierung. Und die ist
hier wirklich unn�tz.
In dem Punkt nehme ich meine Aussage von eben zur�ck und bgehaupte das
Gegenteil ;)
also:
var duplicates = (from item in allItems
group item by item into g
where g.Count() > 1
select g.Key).Distinct();
wenn die duplicates jedes doppelte Element nur einmal enthalten soll
und ohne Distinct, wenn es egal ist, wie h�ufig diese dort enthalten sind.
"Markus Springweiler" <spr...@gmx.de> schrieb im Newsbeitrag
news:1tjccvdj...@sihv.de...
ich bin �brigens nicht der Threader�ffner.
> In dem Punkt nehme ich meine Aussage von eben zur�ck und bgehaupte das
> Gegenteil ;)
;-)
> also:
> var duplicates = (from item in allItems
> group item by item into g
> where g.Count() > 1
> select g.Key).Distinct();
> wenn die duplicates jedes doppelte Element nur einmal enthalten soll
> und ohne Distinct, wenn es egal ist, wie h�ufig diese dort enthalten sind.
Naja: Jetzt musst du mir nur noch die Beispieldaten zeigen, bei welchen
nach dem GroupBy noch mehrfache Werte f�r den Key zur�ckgegeben werden,
welche Distinct() eliminieren soll.
Das "Problem" der mehrfach vorkommenden Werte entstand ja nur durch die
Projektion (SelectMany()).
--
/\/\arkus.
"Markus Springweiler" <spr...@gmx.de> schrieb im Newsbeitrag
news:3oyi0f0qpizj$.dlg@sihv.de...