2013-12-19 192 views
0

我做的LINQ查詢:轉換lambda表達式表達式樹

 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

谷歌說,這是因爲我不使用=>運營商。但我在哪裏放呢?

+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

這不會拋出同樣的錯誤?你仍然有一個lambda表達式與一個語句正文... – Chris