Further Linq enhancements
(Automatically adding template at the end of the page.)
(Adding message template to the top of the page)
Line 1: Line 1:
{{message|Write the content here to display this box}}
Until now, it has been problematic to filter on type in Linq.
Until now, it has been problematic to filter on type in Linq.



Revision as of 22:16, 16 June 2024

Write the content here to display this box

Until now, it has been problematic to filter on type in Linq.

This model shows the problem:

Linq.png

If you want to find SomeSubClass that has a Class2 with a specific name:

var foo2 = (from v in EcoLinqExtender.PSQuery<Class2>(EcoSpace) 
     where (v.Class1.Attribute1 == "5" && v.Name == "5A") 
         select v.Class1)

But now, you also get Class1s that are not of SomeSubClass.That is a problem in certain situations.

In Ocl2Ps, we would have done:

Class2.allInstances->select(a|((a.Class1.Attribute1 = '5') and (a.Name = '5A'))).Class1->FilterOnType(SomeSubClass)

Until now, MDriven Linq2Sql logic did not understand the Linq counterpart of FilterOnType – which is OfType<class>().

But now it does:

var foo2 = (from v in EcoLinqExtender.PSQuery<Class2>(EcoSpace) 
       where (v.Class1.Attribute1 == "5" && v.Name == "5A") 
           select v.Class1).OfType<SomeSubClass>()

With this in place, the database takes care of all the filtering for us and returns the SomeSubClasses that have any Class2 with the correct criteria.

This page was edited 96 days ago on 06/17/2024. What links here