То, что вы спрашиваете, довольно сложно.Причина, по которой примеры используют Словарь, состоит в том, чтобы избежать написания собственного поставщика LINQ (реализация IQueryable).В вашем случае это в значительной степени то, что вам нужно сделать.Кроме того, кажется, что ни EF, ни LINQ to SQL не будут работать для вас, поскольку оба предполагают модели данных statis, в которых сущности - это строки в таблице, а свойства - столбцы этой таблицы (грубо говоря).Похоже, это не так для вас.Если я правильно понимаю, у вас есть строка для свойства в вашей модели.Чтобы это работало, вам нужно было бы реализовать хотя бы частично IQueryable и дать ему понять вашу структуру данных.Например, фильтрация отличается, обычно простой фильтр по свойству Name может быть выражен в БД как WHERE Name = '...', но в вашем случае это, вероятно, приводит к объединению, в котором вам нужно выполнить поиск в таблице ключ / значениедля строки с именем, а затем сравните его значение.Вы можете использовать предложенный выше подход, который загружает все в память.Код довольно прост, но загружает все в память.Или вы можете попробовать написать собственный поставщик LINQ.Это очень сложно.Но если вы хотите попробовать это в любом случае, я бы посоветовал вам взглянуть на эту серию блогов, которая в основном описывает, как можно реализовать что-то вроде LINQ to SQL: http://blogs.msdn.com/b/mattwar/archive/2007/07/30/linq-building-an-iqueryable-provider-part-i.aspx Я пишу серию, в которой описывается, какой типвыражения, которые ваш провайдер должен поддерживать, чтобы он работал с WCF Data Services.Это также может пригодиться: http://blogs.msdn.com/b/vitek/archive/2010/02/25/data-services-expressions-part-1-intro.aspx Обратите внимание, что вы можете написать только часть провайдера самостоятельно.Например, вы можете заниматься фильтрацией и оставлять сложные проекции / расширения вплоть до LINQ to Objects.Такой подход может немного облегчить реализацию вашего провайдера.