views:

48

answers:

1

I'm working with an existing database, utilizing the Entity Framework for dynamic query builder. This is a key factor here. I don't know what types of objects I'll be working with until runtime, as the user is allowed to select which objects/properties they want with the query builder... So I'm using ObjectQuery<EntityObject>.

Everything works great. With normal references, using a combination of .Include() and .Select() does the trick. However, I've got a few tables which are proving to be tricky. These are basically property tables, with an attribute name/value pair.

I need these attributes to be displayed as columns in my result, but I'm not sure how to get Entity to do this. At the moment, Entity can find them, but it just returns a list of the attribute lines relevant to whatever object I'm querying against.

For example...

Main Table:

customerid1 customerName
customerid2 customerName2

Attribute Table:

1 customerid1 attribute1 value1
1 customerid1 attribute2 value2
2 customerid2 attribute2 value3

In the end, I need to display:

customer       attribute1 attribute2
------------------------------------
customername1  value1     value2
customername2             value3

Right now, I get something more like:

customer      attributes
-------------------------------------
customername1 attributeitemlistobject
customername2 attributeitemlistobject

Any suggestions would be greatly appreciated.

A: 

Sounds like you want something along the lines of:

var q = from c in Context.Customers
        let attribute1 = c.Attributes.FirstOrDefault(a => a.Name.Equals("attribute1")
        let attribute2 = c.Attributes.FirstOrDefault(a => a.Name.Equals("attribute2")
        select new 
        {
            customer = c.Name,
            attribute1 = attribute1,
            attribute2 = attribute2
        };
Craig Stuntz