Как можно объединить две таблицы и использовать функцию aggreagate в одном запросе LINQ - PullRequest
0 голосов
/ 07 июля 2011

Я хочу объединить две таблицы, в которых в одной таблице есть баллы, а в другой таблице - информация о, например, статье.

Таблицы:

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

Как выбрать другие поля.Почему я не могу использовать p в select?Может кто-нибудь сказать, как я должен сделать это, чтобы получить следующие результаты:

article_id  title   date    category    score

Ответы [ 2 ]

1 голос
/ 07 июля 2011
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 голосов
/ 07 июля 2011

Я предлагаю вам присоединиться к ним в конструкторе 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...