2013-12-12 38 views
-1

我有三個表:加入,集團通過和其中使用LINQ

  • 請求(的requestId,用戶id,languageId,文本,timePosted)
  • RequestLanguages(的requestId,languageId)
  • UserLanguages(用戶id,languageId) - 所有語言的用戶知道

在請求languageId是語言上熱曲est被問到,但是在RequestLanguages中languageId是用戶想要翻譯的語言。用戶想要翻譯的語言很少,而不僅僅是一種。

我需要在Linq中進行查詢,在該查詢中我將選擇所有語言請求。用戶知道需要翻譯的語言用戶也知道(需要成爲一個列表)。

我使用了group by,但我並不擅長這一點。我不知道如何在requestId上加入請求和請求語言,並將所有languageId用戶想要翻譯成列表!

我想是這樣的:

using (var context = new WordsEntities()) 
     { 
      List<short> languagesIKnow = (from ul in context.UserLanguages 
              where ul.userId == userId 
              select ul.languageId).ToList(); 

      var requests = (from rl in context.RequestLanguages 
          group rl.languageId by rl.requestId into p 
          select new 
          { 
           languageTold = p.ToList(), 
           reqId = p.Key 
          } 
          ); 
      List<ShowRequests> list = new List<ShowRequests>(); 
      foreach (var r in requests) 
      { 
       ShowRequests Req = from req in context.Requests 
          where req.requestId == r.reqId 
          && languagesIKnow.Exists(y => y == req.languageId) 
          && languagesIKnow.Intersect(r.languageTold).Any() 
          select new ShowRequests 
          { 
           languageAsk = req.languageId, 
           languageTold = r.languageTold, 
           userId = req.userId, 
           text = req.text, 
           picture = req.pictureExtension, 
           audio = req.audioExtension, 
           timePosted = req.timePosted 
          }; 
       list.Add(Req); 



      } 

,但我不能指定所需物品作爲類ShowRequests ..

+0

一些樣本數據(輸入和輸出)會理解你的描述是有幫助的。 –

+0

這個老問題似乎被放棄了,對以下兩個答覆帖子提供的反饋很少。我認爲現在可以關閉爲「不清楚」。 – halfer

回答

1

,你可以去喜歡本作加入的2個表,然後後添加您的where子句那。

var query = from request in Requests 
      join requestLanguage in RequestLanguages 
      on request.LanguageId equals requestLanguage.LanguageId 
1

我覺得這些簡單連接都需要

var query = from request in db.Requests 
      join requestLanguage in db.RequestLanguages 
       on request.requestId equals requestLanguage.requestId 
      join userLanguage in db.UserLanguages 
       on requestLanguage.languageId equals userLanguage.languageId 
      where request.requestId == requestId && userLanguage.userId == userId 
      select request; 
+0

我需要將RequestLanguages中的那些languageIds存儲在列表中。 – user3096746