2017-07-18 93 views
0

我想加入下面的四個表,下面的查詢,但我不知道如何檢索所有的答案和與每個問卷相關的問題,我該怎麼做? 使用此查詢只能檢索一個答案和問題。Linq加入查詢4表

感謝

var query = from x in db.Questionario 
         join y in db.Question on x.QuestionarioId equals y.QuestionarioId 
         join j in db.Answer on y.QuestionId equals j.QuestionId 
         join w in db.TypeAnswer on y.TypeAnswerId equals w.TypeAnswerId 

        select new QuestionarioAlldetails 
      { 

       TypesAnswer = w.TypesAnswer, 
       Questiontext = y.Questiontext, 
       Answerv=j.Answerv, 
       Name=x.Name, 

      }; 

,我想用查詢輸出:

<ContentPage.BindingContext> 
    <viewModels:InqueritogViewModel/> 
</ContentPage.BindingContext> 

<StackLayout> 
    <Button Command="{Binding GetinqueritoCommand}" Text="Aceder a Questionarios"></Button> 

    <ListView x:Name="InqueritoView" ItemsSource="{Binding Inqueritos}" HasUnevenRows="True" ItemSelected="ListView_OnItemSelected"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <ViewCell> 
        <StackLayout> 
         <StackLayout > 
          <Label x:Name="Label1" Text="{Binding Questiontext}"></Label> 
         </StackLayout> 
         <StackLayout Orientation="Horizontal"> 
          <controls:Checkbox></controls:Checkbox> 
          <Label Text="{Binding Answerv}" VerticalTextAlignment="Center"></Label> 
         </StackLayout> 
         <StackLayout Orientation="Horizontal"> 
          <controls:Checkbox></controls:Checkbox> 
          <Label Text="{Binding Answerv}" VerticalTextAlignment="Center"></Label> 
         </StackLayout> 
         <StackLayout Orientation="Horizontal" > 
          <controls:Checkbox></controls:Checkbox> 
          <Label Text="{Binding Answerv}" VerticalTextAlignment="Center"></Label> 
         </StackLayout> 
        </StackLayout> 
       </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

</StackLayout> 

Tables data

Output Query

+0

提示:使用'foreach'循環。 – Rooben

+0

但是如何?對於每個問題必須創建一個新的變量,如question1,question2等,並且答案相同。 – Phill

+0

這取決於如果你的查詢是在相同的範圍內你調用它或不,你應該看看這個答案[這裏](https://stackoverflow.com/questions/3601301/how-to-extract -results-from-a-linq-query) – Rooben

回答

0

您需要枚舉從您的查詢的結果是這樣

List<QuestionarioAlldetails> query = (from x in db.Questionario 
        join y in db.Question on x.QuestionarioId equals y.QuestionarioId 
        join j in db.Answer on y.QuestionId equals j.QuestionId 
        join w in db.TypeAnswer on y.TypeAnswerId equals w.TypeAnswerId 

       select new QuestionarioAlldetails 
     { 

      TypesAnswer = w.TypesAnswer, 
      Questiontext = y.Questiontext, 
      Answerv=j.Answerv, 
      Name=x.Name, 

     }).ToList(); 

編輯

要創建問卷每單排多個答案選項,鳥巢的結果是這樣的;

List<Questionarios> query = (from x in db.Questionario 
       select new Questionarios 
     { 
      Name = x.Name, 
      Answers = (from y in db.Question 
        join j in db.Answer on y.QuestionId equals j.QuestionId 
        join w in db.TypeAnswer on y.TypeAnswerId equals w.TypeAnswerId 
        where y.QuestionarioId == x.QuestionarioId 
        select new Answer { 

        TypesAnswer = w.TypesAnswer, 
        Questiontext = y.Questiontext, 
        Answerv=j.Answerv}).ToList() 

       }).ToList(); 

(你需要你的Questionarios類有一個列表屬性按住接聽細節)

然後,您可以窩在你的主stacklayout列表或stacklayout並設置數據源的答案財產。

+0

感謝您試圖提供幫助,但給我的輸出相同。 – Phill

+0

Phill,數據庫如何定義 - 是Entity Framework還是自定義類? – Tintow

+0

我正在使用實體框架。 – Phill