私はdbに4つのテーブルを持っています:
- News (NewsID(PK), NewsCategoryID(FK), NewsType (FK), NewsFormatID(FK), Caption, Description)
- NewsType (NewsTypeID (PK), Caption)
- NewsCategory(NewsCategoryID (PK), Caption)
- NewsFormat (NewsFormatID (PK), Caption)
2つのPOCOオブジェクトがあります:
public class News
{
public int NewsID { get; set; }
public int NewsTypeID { get; set; }
public int NewsFormatID { get; set; }
public string Category{ get; set; }
public string Caption { get; set; }
public string Description { get; set; }
}
public class NewsCategory
{
public string Caption { get; set; }
public List<News> News{ get; set; }
}
Listを返すクエリを作成したい。クエリでは、ニュースをカテゴリ別にグループ化します。私はこのようにしました:
public static List<NewsCategory> GetNews()
{
using (var tc = new NewsDataContext())
{
var dc = tc.DataContext;
var newsQuery= (from news in dc.News
join newsCategory in dc.NewsCategories on news.NewsCategoryID equals newsCategory.NewsCategoryID
join newsType in dc.NewsTypes on news.NewsTypeID equals newsType.NewsTypeID
join newsFormat in dc.NewsFormat on news.NewsFormatID equals newsFormat.NewsFormatID
select new News
{
NewsID = news.NewsID,
NewsFormatID = newsFormat.NewsFormatID,
Caption = news.Caption,
Description = news.Description,
Category = newsCategory.Caption
});
return newsQuery.GroupBy(item => item.Category).Select(item => new NewsCategory
{
Caption = item.Key,
News= item.ToList()
}).ToList();
}
}
..そしてこれは機能しています。ここでの私の質問は、POCOクラスNewsからNewsCategoryプロパティを削除し、クエリで直接(結合後)カテゴリ別にグループ化することはできますか?前もって感謝します。