2013-12-19 5 views
0

я сделать Linq запрос:Преобразовать в дерево выражения

 var parcels = (from parcel in Db.Parcels 
           where 
            (parcel.Neighbors.Count(neig => 
             { 
              var neigType1 = neig.Neighbors as NeigType1; 
              var neigType2 = neig.Neighbors as NeigType2; 
              var result = false; 
              if (neigType1 != null) 
              { 
               result = neigType1.Name.Contains(NeigTextBox.Text); 
              } 

              if (neigType2 != null) 
              { 
               result = кадастроваяОрганизация.Name.Contains(NeigTextBox.Text); 
              } 
              return result; 
             }) > 0) 
           select parcel).ToList(); 

Но в строке (parcel.Neighbors.Count(neig => я получаю сообщение об ошибке:

A lambda expression with a statement body cannot be converted to an expression tree

Google говорит, что это потому, что я не с помощью оператора => , Но где я это сказал?

+1

Самое интересное, я думаю, бывает, где '' ..... –

+0

это результат возвращаемый тип BOOL? – dovid

+0

немного или о том, что вы можете сделать с Linq для объектов http://msdn.microsoft.com/en-us/library/bb345303(v=vs.110).aspx –

ответ

1

Попробуйте это решение:

var parcels = Db.Parcels 
    .Where(p => p.Neighbors.Count(neig => 
     { 
      ..... 
      return result; 
     }) > 0) 
    .ToList(); 
+0

Неужели это не приведет к такой же ошибке? У вас все еще есть выражение лямбда с телом утверждения ... – Chris

Смежные вопросы