Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Linq Ausdruck: Syntaxfehler (type arguments cannot be inferred/cannot convert AnonymousType#1)
iceman87
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

Linq Ausdruck: Syntaxfehler (type arguments cannot be inferred/cannot convert AnonymousType#1)

beantworten | zitieren | melden

Hallo,

ich hab nen kleines Problem mit Linq, das mich in den Wahnsinn treibt. Vllt bin ich einfach nur blind, aber ich komm nich so richtig dahinter.

            var res = (from b in begrgr
                       where
                           (from bb1 in begrgbez
                            where
                              !
                                (from bb2 in begrgbez
                                 select new
                                 {
                                     bb2.Id_BegrGr2
                                 }).Contains(new BegrGBez { Id_BegrGr1 = bb1.Id_BegrGr1 })                         
                            group bb1 by new
                            {
                                bb1.Id_BegrGr1
                            } into g
                            select new
                            {
                                Id_BegrGr1 = (System.Int16?)g.Key.Id_BegrGr1
                            }).Contains(new { b.Id_BegrGr })
                       select new
                       {
                           b.Id_BegrGr
                       }).Count();

An der Stelle .Contains(new BegrGBez { Id_BegrGr1 = bb1.Id_BegrGr1 }) haut er mir folgenden Fehler raus:
Zitat
The type arguments for method 'System.Linq.Enumerable.Contains<TSource>(System.Collections.Generic.IEnumerable<TSource>, TSource)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

Ich habs auch versucht mit .Contains<BegrGBez>(new BegrGBez { Id_BegrGr1 = bb1.Id_BegrGr1 }), dann kommt folgendes:
Zitat
Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<MsrAnalyzer.Data.Tables.BegrGBez>

Wobei mir nich ganz klar is wo das herkommt, denn egtl hat er ja durch das "new BegrGBez" den Type.

Hat jemand eine Idee?
Vielen Dank schonmal.
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 849
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo iceman87,

dein Problem ist das Du mit select new {} einen anonymen typ erzeugst und ihn dann mit einer Instanz von deiner Klasse vergleichst (BegrGBez)

Du müsstest auch direkt in dem select eine Instanz vom Typen BegrGBez erzeugen, dann sollte es klappen
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von unconnected am .
private Nachricht | Beiträge des Benutzers
iceman87
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Danke, so klappt es tatsächlich. Da muss man auch erstmal drauf kommen... ;)
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo iceman87,
Zitat
Da muss man auch erstmal drauf kommen... ;)
was aufgrund der klaren Fehlermeldung allerdings kein Problem ist. Siehe auch [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen).

herbivore
private Nachricht | Beiträge des Benutzers