Laden...

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

Erstellt von iceman87 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.979 Views
I
iceman87 Themenstarter:in
5 Beiträge seit 2009
vor 13 Jahren
Linq Ausdruck: Syntaxfehler (type arguments cannot be inferred/cannot convert AnonymousType#1)

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:

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:

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. 🙂

849 Beiträge seit 2006
vor 13 Jahren

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

I
iceman87 Themenstarter:in
5 Beiträge seit 2009
vor 13 Jahren

Danke, so klappt es tatsächlich. Da muss man auch erstmal drauf kommen... 😉

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo iceman87,

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