2011-07-07 14 views
0

2つのテーブルをマージしたい場合、あるテーブルではスコアであり、別のテーブルでは例えばarticleに関する情報です。1つのLINQクエリで2つのテーブルを結合し、aggreagate関数を使用する方法

テーブル:

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) 
}; 

は、どのように私は他のfiledsを選択することができます。なぜ私は選択でpを使用できないのですか?誰かが私は結果を以下取得するには、この操作を行う必要がありますどのように伝えることができます:

article_id title date category score 

答えて

1
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) 
}; 
+0

おかげで多くのことを:) – nosbor

-1

私はあなたが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(); 
関連する問題