Meine EF-Modelle wie folgt aussehen:ASP.NET Entity Framework 6 HashSet oder Liste für eine Sammlung?
public class ContentStatus
{
public ContentStatus()
{
this.Contents = new List<Content>();
}
public int ContentStatusId { get; set; }
public string Name { get; set; }
public virtual ICollection<Content> Contents { get; set; }
}
Allerdings habe ich auch auf der Suche gesehen implementatins dies wie:
public class ContentStatus
{
public ContentStatus()
{
this.Contents = new HashSet<Content>();
}
public int ContentStatusId { get; set; }
public string Name { get; set; }
public virtual ICollection<Content> Contents { get; set; }
}
Hier ist die DDL für dieses Objekt:
CREATE TABLE [dbo].[ContentStatus] (
[ContentStatusId] INT NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
CONSTRAINT [PK_ContentStatus] PRIMARY KEY CLUSTERED ([ContentStatusId] ASC)
);
Jeder kann sag mir was ich benutzen soll oder gibt es sogar einen Unterschied und wann würde ich die Liste benutzen und wenn das HashSet wenn das zutrifft.
Dank
'HashSet' kann iteriert werden. Jede Klasse, die 'IEnumerable' implementiert, kann dies tun, und beide 'Listen' 'und' HashSet 'implementieren. –
@XavierPoinas aktualisierte Antwort ... Gott weiß, wo ich diese Idee von ... –
Ich würde davon ausgehen, dass Hashset für Einsätze teurer wäre, da es Eindeutigkeit gewährleistet und muss daher mit anderen Einträgen oder zumindest ihre Hashes vergleichen, aber weniger teuer für die Entfernung (vorausgesetzt, ein Hash findet Elemente schneller als die Aufzählungsliste). –