将数据库中的不同值加载到List<>中

时间:2013-05-21 21:06:49

标签: c# database entity-framework list foreach

我用一个事件(=体育纪律)的外键创建了一个Record POCO课程。 记录可以链接到1个事件,但事件可以有多个记录(世界记录,奥运会记录等)。 现在我想在数据库中使用for-each循环打印每个事件(+附加记录)到索引视图。

但由于table Record没有List属性,我必须从Record表中创建一个本地(Distinct)事件列表,这就是我的问题。

有关其他信息,请参阅我的记录模型

    public class Record
{
    [Key]
    public int RecordId { get; set; }
    public string ResultName { get; set; }
    public int ResultAge { get; set; }
    public double ResultPrestation { get; set; }
    public System.DateTime ResultDate { get; set; }
    public string ResultPlace { get; set; }
    public int CountryId { get; set; }  
    [ForeignKey("CountryId")]
    public virtual Country Country {get; set;}
    public int EventId { get; set; }
    [ForeignKey("EventId")]
    public virtual Event Event { get; set; }
}

事件模型

    public class Event
{
    [Key]
    public int EventId { get; set; }
    public String Sport { get; set; }
    public String Discipline { get; set; }
    public Boolean SchoolcupEvent { get; set; }
    public List<Record> Records { get; set; }
}

我写了一篇文章,最后我得到了一个记录存在的事件列表,但这不是一个不同的列表,这就是我需要的。

        List<Event> events = new List<Event>();
        foreach(var item in db.Records)
        {               
            Event e = db.Events.Find(item.EventId);
            events.Add(e);
        }

我希望有人可以帮助我。

此致

3 个答案:

答案 0 :(得分:4)

var events = db.Records.Distinct().ToList();

答案 1 :(得分:0)

Enumerable.Distinct应该有效

答案 2 :(得分:0)

如何将事件放入Set中,如果有的话会删除重复项,然后将set转换回列表。

Set<Event> eventSet = new TreeSet<Event>();
foreach(var item in db.Records)
{               
        Event e = db.Events.Find(item.EventId);
        eventSet.Add(e);
}
List<Event> eventList = new ArrayList<Event>();
if(eventSet != null && eventSet.size() > 0)
{
        eventList.add(eventSet);
}