簡體   English   中英

如何在一個 LINQ 查詢中加入兩個表並使用聚合 function

[英]How can I join two tables and use aggreagate function in one LINQ query

我想合並兩個表,其中一個表是分數,另一個表是關於例如文章的信息。

表:

Articles
---------------
article_id
title
date
category
user_id

Articles_Scores
---------------
article_id
user_id
score

我已經寫了這個 linq 查詢:

from p in db.Articles.Where(p => p.user_id == 2)
join o in db.Articles_Scores.Where(o => o.user_id == 2) on p.article_id equals o.article_id
group o by o.article_id into result
select new
{
result.Average(m => m.score)
};

我怎樣才能 select 其他文件。 為什么我不能在 select 中使用 p? 有人可以告訴我應該怎么做才能得到以下結果:

article_id  title   date    category    score
from p in db.Articles.Where(p => p.user_id == 2)
select new
{
    p.article_id, 
    p.title, 
    p.date, 
    p.category,
    AverageScore = db.Articles_Scores
                     .Where(o => o.user_id == p.user_id && p.article_id == o.article_id)
                     .Average(m => m.score)
}; 

我建議您將它們加入 DBML 設計器並使用它:

var query = (from article in articles
            where article.article_id == givenId && article.user_id == givenUser
            let scores = article.scores.ToList()
            from score in scores
            select score.value).Sum();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM