ASP.NET将项添加到List中的List

时间:2016-10-20 18:01:50

标签: c# asp.net

我在这里上课:

public class CP_VIP_Preview_TimeSlots
    {
        public int id { get; set; }
        [DisplayName("Time Slots")]
        public string timeSlot { get; set; }
        [DisplayName("Date Slots")]
        public string dateSlot { get; set; }
    }

    public class CPVIPPreviewTimeSlots : DbContext
    {
        public DbSet<CP_VIP_Preview_TimeSlots> Data { get; set; }
    }

现在我要做的是将类的每个项目放入List中,我创建了这个列表:

List<string> newList = new List<string>();

我希望添加到此列表中的是id和timeSlot以及DateSlot,但我希望timeSlot和DateSlot为组合字符串。所以我的新列表将有id和一些名为timeDateSlot的字符串...我希望这有意义,我该怎么做?

5 个答案:

答案 0 :(得分:0)

如果您有一个名为CP_VIP_Preview_TimeSlots的{​​{1}}:

test

但是,您无法为这些字符串选择标识符。

答案 1 :(得分:0)

如果您确实不想存储TimeSlots类的列表,那么您需要的是KeyValuePair的列表。

List<KeyValuePair<int,string>>

在此您可以添加:

List<KeyValuePair<int,string>> myList = new List<KeyValuePair<int,string>>();
myList.Add(new KeyValuePair<int, string>(test.id.ToString(), test.timeSlot + test.dateSlot));

答案 2 :(得分:0)

List<CP_VIP_Preview_TimeSlots> newList = new List<CP_VIP_Preview_TimeSlots>();
foreach(var x in CPVIPPreviewTimeSlots){ //whatever your db data is
    newList.add(x);             //add an instance to list
}

这样的事可能会有所帮助。然后你可以这样显示,

var x = newList.first();
string combined = x.timeSlot + x.dateSlot;

答案 3 :(得分:0)

如果您想使用Id识别数据,可以使用以下代码

foreach(CP_VIP_Preview_TimeSlots d in CPVIPPreviewTimeSlots.Data)
{
    List<KeyValuePair<int,string>> lstIdWiseData = new List<KeyValuePair<int,string>>();
    lstIdWiseData.Add(new KeyValuePair<int,string>(d.Id, string.Concat(d.timeSlot, d.dateSlot )));
}

如果您的ID不是唯一身份,则可以在上面的代码中将KeyValuePair<int,string>替换为Tuple<int,string>

答案 4 :(得分:0)

您可以在类中添加额外的属性,以获取可在任何位置访问的正确字符串:

    public class CP_VIP_Preview_TimeSlots
    {
        public int id { get; set; }
        [DisplayName("Time Slots")]
        public string timeSlot { get; set; }
        [DisplayName("Date Slots")]
        public string dateSlot { get; set; }

        public string combinedString
        {
            get
            {
                return timeSlot + " " + dateSlot;
            }
        }
    }

这也可以在Array.findIndex

中使用
        DropDownList1.DataSource = newList;
        DropDownList1.DataTextField = "combinedString";
        DropDownList1.DataValueField = "timeSlot";
        DropDownList1.DataBind();