Further Linq enhancements
This page was created by Alexandra on 2018-12-02. Last edited by Edgar on 2025-01-20.

Up until now there has been a problem to filter on type in Linq

The problem can be shown with this model:

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 Class1’s that are not of SomeSubClass. And 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 is place the database takes care of all the filtering for us and returns the SomeSubClasses that has any Class2 with the correct criteria.

MDriven Chat

How would you like to chat today?

Setting up your conversation…

This may take a few moments