2017-07-21 6 views
3

Die Schlagwörter Klasse istWie kann ich in Linq gruppieren?

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

und meine Frage ist

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

Das Problem mit dem obigen Ansatz ist, dass ich nicht auch die TagId und die TagLink zuordnen. Wie kann ich das beheben?

+0

Warum gruppieren Sie nicht auch nach diesen Eigenschaften? –

Antwort

5

für jeden Tag Unter der Annahme, dass Sie ein einzigartiges erhalten TagId und TagLink, können Sie First() sie setzen verwenden:

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); 

Wenn diese Eigenschaften für den gleichen Tag verschieden sein können, Gruppe durch ihre Kombination:

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); 
Verwandte Themen