C# LINQ:如何对匿名类型进行分组
我需要填写新闻对象属性和集合。但是我不知道通过分组结果来填充它们的正确方法是什么 例如,如何填充属性CategoryId、CategoryName和CommentId、CommentBody 我的代码如下所示:C# LINQ:如何对匿名类型进行分组,c#,asp.net-mvc,entity-framework,linq,C#,Asp.net Mvc,Entity Framework,Linq,我需要填写新闻对象属性和集合。但是我不知道通过分组结果来填充它们的正确方法是什么 例如,如何填充属性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 sele
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
。这是一组可循环的组,其中每个组都有一个键,并且本身就是一组可循环的源项
Categories = q
.GroupBy(jj => jj.CategoryName)
.Select(g => new Category
{
CategoryId = g.First().CategoryId,
CategoryName = g.Key
}).ToList(),
注意:首先调用组是安全的,因为每个组始终至少有一个成员。提示:当前您没有使用lambda表达式参数(
vv
和b
)…因此您希望按类别名称分组,并且仍然能够检索CategoryId
?@Caramiriel,是的,请帮我解决这个问题,因为我是Linq的新手。非常感谢much@JonSkeet,谢谢你的帮助:),我不知道正确的使用方法,请帮我解决这个问题,因为我是Linq的新手。非常感谢。