LINQ: Writing IN Query

Posts   
 
    
pat
User
Posts: 215
Joined: 02-Mar-2006
# Posted on: 21-Feb-2010 00:58:33   

Hi,

how would I write this query in LINQ2LLBLGen please?

select e.ElementId From Element e WHERE 
ElementId IN (Select ElementId FROM TagElement where TagID = 5) 
AND ElementId NOT IN (Select ElementId FROM TagElement where TagID = 27)

Thanks, Patrick

pat
User
Posts: 215
Joined: 02-Mar-2006
# Posted on: 21-Feb-2010 01:16:26   

Ah maybe what confused me is that the SQL generated is more like this:

select e.ElementId From Element e WHERE 
EXISTS (SELECT NULL AS E FROM TagElement where TagID = 5 AND ElementID=e.ElementID) 
AND NOT EXISTS (SELECT NULL AS E FROM TagElement where TagID = 2 AND ElementID=e.ElementID) 

But I guess it works as well simple_smile

So no need to answer the question.

       public static void GetElementsTest()
        {
            var da = new DataAccessAdapter(true);
            var metaData = new LinqMetaData(da);

            var t1 = (from t in metaData.TagElement
                      where t.TagId == 5
                      select t.ElementId);
            var t2 = (from t in metaData.TagElement
                      where t.TagId == 2
                      select t.ElementId);

            var q = (from e in metaData.Element
                     where t1.Contains(e.ElementId) && t2.Contains(e.ElementId)
                     select e).Count();

            Console.WriteLine("COUNT {0}", q);
        }

Thanks, Patrick