J'essaie d'obtenir une liste de balises distincte pour un enregistrement. Cela fonctionne en quelque sorte, sauf que le nom du tag est toujours le premier répété.Requête de jointure distincte LINQ
public EntityCollection<TagEntity> Tags
{
get
{
EntityCollection<TagEntity> x = new EntityCollection<TagEntity>()
{
new TagEntity(){Id=1, IsActive=true, Name="Tag1"},
new TagEntity(){Id=2, IsActive=true, Name="Tag2"},
new TagEntity(){Id=3, IsActive=true, Name="Tag3"},
new TagEntity(){Id=4, IsActive=true, Name="Tag1"},
new TagEntity(){Id=5, IsActive=true, Name="Tag5"},
new TagEntity(){Id=6, IsActive=true, Name="Tag6"},
};
return x;
}
}
public EntityCollection<StoryTagsEntity> StoryTags
{
get
{
EntityCollection<StoryTagsEntity> x = new EntityCollection<StoryTagsEntity>()
{
new StoryTagsEntity(){ TagId=1, StoryId=1},
new StoryTagsEntity(){ TagId=1, StoryId=2},
new StoryTagsEntity(){ TagId=2, StoryId=1},
new StoryTagsEntity(){ TagId=3, StoryId=1},
new StoryTagsEntity(){ TagId=2, StoryId=3},
new StoryTagsEntity(){ TagId=4, StoryId=1},
};
return x;
}
}
public List<string> FetchTagNamesByStory(bool? isActive, int StoryId)
{
var d = (from t in this.Tags
join st in this.StoryTags on t.Id equals st.StoryId
where t.IsActive == isActive.GetValueOrDefault() && st.StoryId == StoryId
select t.Name);
List<string> x = new List<string>();
foreach (var item in d)
{
x.Add(item);
}
return x;
}
Quels sont les résultats dans une liste des balises comme ceci:
Tag1, Tag1, Tag1, Tag1
Où cela devrait être:
Tag 1, Tag2, Tag3, Tag1
Des idées?
le paramètre StoryId doit être storyId pour une meilleure lisibilité. –
Je viens du monde VB.NET et pour une raison quelconque, StoryId est plus facile à lire pour moi que storyId. C'est juste une habitude. –