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. 🙂
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
Danke, so klappt es tatsächlich. Da muss man auch erstmal drauf kommen... 😉
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