2016-10-20 2 views
0

У меня есть этот класс здесь: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<string> newList = new List<string>(); 

Что я хочу добавить в этот список, это id и timeSlot и DateSlot, однако я хочу, чтобы timeSlot и DateSlot представляли собой объединенную строку. Таким образом, у моего нового списка будет id и некоторая строка с именем timeDateSlot ... Надеюсь, это имеет смысл, как бы я это сделал?

+2

Вы пробовали что-нибудь? У вас есть хотя бы код, который добавляет одно поле в список? –

+0

Вы не сможете поместить два разных значения (например, 'id' и конкатенированный' itemSlot' + 'dateSlot' в' List '. Вам понадобится' List ', где T - класс с полем 'id' и поле' timeDateSlot'. – Tim

+0

вы можете просто добавить сами элементы класса в список через «Список newList = новый список ();» затем сделать foreach для каждого элемента в DB –

ответ

0

Если у вас есть CP_VIP_Preview_TimeSlots называется test:

newList.add(test.id.ToString()); 
newList.add(test.timeSlot + test.dateSlot); 

Однако, вы не можете выбирать идентификаторы для этой строки.

+0

Включит ли это все элементы в список? – user979331

+0

@ LinuxDisciple Звучит хакерским. – Gavin

+0

@ user979331 Что значит «все предметы»? Если все 3 объекта на объекте, то да. У вас будет две строки. Один из них будет id, а второй будет привязан к timeSlot и dateSlot. – Gavin

0

Если вы действительно не хотите хранить список своего класса TimeSlots, то вам нужен список KeyValuePair s.

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

Я получаю сообщение об ошибке, тест не существует. – user979331

+0

wow ...Я решил, что вы знаете, как итерации каждого элемента и добавить его. этот код не предназначен для копирования/вставки - советуем вам прекратить «кодирование» и забрать книгу, чтобы начать с самого начала. – Darren

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; 
+0

Я получаю ошибку с этой строкой 'foreach (var x в CPVIPPreviewTimeSlots)' является типом, но используется переменная – user979331

+0

@ user979331 заполняет CPVIPPreviewTimeSlots тем, откуда вы собираете данные (я не уверен, где вы собираете материал для список) –

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

Если идентификатор не является уникальным, вы можете заменить KeyValuePair<int,string> с Tuple<int,string> в вышеуказанном код

+0

Я получаю ошибки, говорящие, что d не существует – user979331

+0

@ user979331 d в приведенном выше коде является объектом класса «CP_VIP_Preview_TimeSlots» –

+0

@ user979331 Возможно, редактирование в ответе будет полезно для вас –

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

Это также может быть затем использован в вашем other question

 DropDownList1.DataSource = newList; 
     DropDownList1.DataTextField = "combinedString"; 
     DropDownList1.DataValueField = "timeSlot"; 
     DropDownList1.DataBind(); 
Смежные вопросы