I have a semi complicated question regarding Entity Framework4, Lambda expressions, and Data Transfer Objects (DTO).

So I have a small EF4 project, and following established OO principles, I have a DTO to provide a layer of abstraction between the data consumers (GUI) and the data model.

* VideoDTO = DTO with getters/setters, used by the GUI
* VideoEntity = Entity generated by EF4

My question revolves around the use of the DTO by the GUI (and not having the GUI use the Entity at all), combined with a need to pass a lambda to the data layer. My data layer is a basic repository pattern with Add. Change, Delete, Get, GetList, etc.
Trying to implement a Find method with a signature like so:

```
public IEnumerable<VideoDTO> Find(Expression<Func<VideoEntity, bool>> exp)
...
_dataModel.Videos.Where(exp).ToList<Video>()
---

```

My problem/concern is the "exp" needing to be of type VideoEntity instead of VideoDTO. I want to preserve the separation of concerns so that the GUI does not know about the Entity objects. But if I try to pass in 

```
Func<VideoDTO, bool> 

```

I cannot then do a LINQ Where on that expression using the actual data model.

Is there a way to convert a `Func<VideoDTO,bool>` to a `Func<VideoEntity, bool>`

Ideally my method signature would accept `Func<VideoDTO, bool>` and that way the GUI would have no reference to the underlying data entity. 

Is this clear enough? Thanks for your help

---

Thanks for the repliesto both of you.

I'll try the idea of defining the search criteria in an object and using that in the LINQ expression. Just starting out with both EF4 and L2S, using this as a learning project. 

Thanks again!