Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:如何对匿名类型进行分组_C#_Asp.net Mvc_Entity Framework_Linq - Fatal编程技术网

C# LINQ:如何对匿名类型进行分组

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

我需要填写新闻对象属性和集合。但是我不知道通过分组结果来填充它们的正确方法是什么

例如,如何填充属性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()
};

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的新手。非常感谢。