【发布时间】:2013-12-12 19:09:13
【问题描述】:
我有三张桌子:
- 请求(requestId、userId、languageId、text、timePosted)
- RequestLanguages (requestId, languageId)
- UserLanguages (userId, languageId) - 用户知道的所有语言
在 Requests 中 languageId 是提出请求的语言,但在 RequestLanguages 中 languageId 是用户想要翻译的语言。用户想要翻译的语言可能很少,而不仅仅是一种。
我需要在 Linq 中进行查询,在其中我将选择所有关于用户知道的语言的请求,这些请求想要翻译成用户也知道的语言(这需要是一个列表)。
我使用了 group by,但我并不擅长此操作。我不知道如何在 requestId 上加入 Requests 和 RequestLanguages 并将所有 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);
}
但我不能将 Req 分配为类 ShowRequests..
【问题讨论】:
-
一些示例数据(输入和输出)将有助于理解您的描述。
-
这个老问题似乎被放弃了,下面的两个答案帖子几乎没有反馈。我认为现在可以将其关闭为“不清楚”。