2015-10-28 6 views
0

У меня есть класс метаданных с некоторыми настраиваемыми свойствами для упрощения доступа к данным. Одна из проблем, с которыми я столкнулся, заключается в том, что когда я пытаюсь использовать это свойство в операторах LINQ, я получаю эту ошибку.LINQ эквивалент string.Join, который можно использовать в LINQ to Entities

The specified type member 'CrewCodesStr' is not supported in LINQ to Entities. 

Я знаю, почему я получаю, я задаюсь вопросом, если есть другой способ сделать это, чтобы имущество будет использоваться в операторах LINQ.

Вот свойство:

public string CrewCodesStr 
{ 
    get { return string.Join(", ", CrewCodesList); } 
} 

Ниже приведен пример запроса, который он терпит неудачу на.

query = query.Where(wo => searchCriteria.crewCode.Contains(wo.CrewCodesStr)); 
+0

Вы можете разместить полный запрос вы работаете – DLeh

+1

Кажется, реальный вопрос, почему вы представляете ту же информацию в несколько полей на вашей модели. Если ваша структура данных была нормализована, вам вообще не понадобится логика в модели ... – Basic

+1

Довольно странный пример, который, кажется, не очень полезен. Если ваши критерии поиска «B, D», это не сработает, если CredCodeStr был «A, B, C, D», который вы считаете совпадающим. –

ответ

3

Вы можете сделать string.Joinпосле вы выбрали информацию вам нужно из базы данных. Если вы делаете ToList(), это будет перечислять данные, которые вам нужны из базы данных. После этого вы можете делать все, что # C вы хотите, как это будет работать в памяти после ToList()

var result = MyObjects.Select(x => new 
{ 
    ID = x.ID, 
    CrewCodes = x.CrewCodes 
}) 
.AsEnumerable()//enumerate the queryable 
.Select(x => new 
{ 
    ID = x.ID, 
    String = string.Join(",",x.CrewCodes) 
}); 
+0

Вот что я в итоге используя, но вместо того, чтобы делать здесь соединение, я могу вызвать свойство CrewCodesStr, поскольку объект находится в памяти сейчас, и я работаю с LINQ для объектов вместо Entities. Спасибо! – JB06

+0

отлично, AsEnumerable работает! – UJS