2014-03-06 76 views
12

我在查詢中想要合併2個列表時出現問題。Linq to Entities中的聯盟錯誤

我想從表中的記錄合併地方位置到視圖模型屬性地方

Fruits = (from e in db.Fruits 
      where !e.Excluded 
      select new FruitViewModel() 
      { 
       CodFood = e.CodFood, 
       Name = e.Name, 
       Color = e.Color, 
       Places = (from p in e.Places 
          where !p.Excluded 
          select new FruitViewModel() 
          { 
           CodPlace = p.CodPlace, 
           Name = p.Name 
          }).Union(
          from r in e.Locations 
          where !r.Excluido 
          select new FruitViewModel() 
          { 
           CodLocation = r.CodLocation, 
           Name = p.Name 
          }) 
      }), 

,但它給了我:

System.NotSupportedException:類型 'Project.ViewModel.Fruits.FruitsViewModel' 出現在兩個結構不兼容的初始化單一的LINQ to Entities查詢中。一個類型可以在同一個查詢中的兩個地方進行初始化,但前提是兩個地方都設置了相同的屬性,並且這些屬性的設置順序相同。

我可以在Linq執行後合併爲this answer,但我想保持簡單而不會更改太多的代碼,如果可能的話 - 在延期執行前查詢。

我該如何解決這個問題?

回答

13

根據錯誤消息,您的FruitViewModel初始化似乎是一個問題。試試這個:

  Places = (from p in e.Places 
         where !p.Excluded 
         select new FruitViewModel() 
         { 
          CodLocation = "", 
          CodPlace = p.CodPlace, 
          Name = p.Name 
         }).Union(
         from r in e.Locations 
         where !r.Excluido 
         select new FruitViewModel() 
         { 
          CodLocation = r.CodLocation, 
          CodPlace = "", 
          Name = p.Name 
         }) 
+2

工作!謝謝!我沒有正確閱讀錯誤信息。 –