LINQ:如何分组匿名类型
本文关键字:类型 LINQ | 更新日期: 2023-09-27 18:05:42
我需要填充News对象属性和集合。但是我不知道如何通过分组结果来填充它们。
例如如何填写属性CategoryId, CategoryName和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()
};
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是安全的,因为每个组总是至少有一个成员。