我需要填充新闻对象属性和集合。但我不知道通过对结果进行分组来填充它们的正确方法是什么。
例如如何填充属性CategoryId,CategoryName和CommentId,CommentBody
我的代码如下所示:
var q = (
from news in db.News
from categories in news.Categories
from comments in news.Comments
where news.NewsId == 1
select new { news.NewsId, news.NewsTitle , categories.CategoryId,categories.CategoryName , comments.CommentId, comments.CommentBody }
).ToList();
News ne = new News()
{
NewsTitle = q.Select(w => w.NewsTitle).FirstOrDefault(),
Categories = q.GroupBy(jj => jj.CategoryName).Select(vv => new Category { CategoryId, CategoryName }).ToList(),
Comments = q.GroupBy(ww => ww.CommentBody).Select(b => new Comment { CommentId , CommentBody }).ToList()
};
答案 0 :(得分:0)
GroupBy的结果是IEnumerable<IGrouping<TKey, TItem>>
。这是一组可循环的组,其中每个组都有一个Key,并且本身是一组可循环的源项。
Categories = q
.GroupBy(jj => jj.CategoryName)
.Select(g => new Category
{
CategoryId = g.First().CategoryId,
CategoryName = g.Key
}).ToList(),
注意:在组中调用First是安全的,因为每个组总是至少有一个成员。