我如何在Linq分组?

时间:2017-07-21 23:18:52

标签: c# linq

Tags类是

public class Tags
    {
        public int TagId;
        public string Tag;
        public string TagLink;
        public int TagCount;
    }

我的查询是

 var v = db.QuestionTags
           .GroupBy(n => n.Tag.Tag1)
           .Select(n => new Tags
           {
               Tag = n.Key,
               TagCount = n.Count()
           }
           )
           .OrderByDescending(n => n.TagCount);

上述方法的问题在于我无法映射TagIdTagLink。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

假设每个Tag获得一个唯一的TagIdTagLink,您可以使用First()进行设置:

var v = db.QuestionTags
    .GroupBy(n => n.Tag.Tag1)
    .Select(n => new Tags {
        Tag = n.Key,
        TagCount = n.Count(),
        TagId = n.First().TagId,
        TagLink = n.First().TagLink
    })
    .OrderByDescending(n => n.TagCount);

如果同一Tag的这些属性可能不同,则按其组合进行分组:

var v = db.QuestionTags
    .GroupBy(n => new {n.Tag.Tag1, n.TagId, n.TagLink})
    .Select(n => new Tags {
        Tag = n.Key.Tag1,
        TagCount = n.Count(),
        TagId = n.Key.TagId,
        TagLink = n.Key.TagLink
    })
    .OrderByDescending(n => n.TagCount);