C # Как создать список классов - PullRequest
2 голосов
/ 11 ноября 2011

Я новичок в c #, но не в программировании.Прежде всего, большое спасибо за вашу помощь!

Я хочу класс или структуру в зависимости от того, что подходит, у которого есть 3 переменные.Строка и два datetime.

Я хочу создать цикл, который будет хранить новые классы в списке.

Что-то вроде:

для каждого элемента в DataViewer
создать новый класс
назначить переменные
сохранить класс в списке
следующий

Большое спасибо за вашу помощь

Ответы [ 5 ]

8 голосов
/ 11 ноября 2011

Вы можете сделать это легко с помощью LINQ:

var list = dataViewer
    .Select(item => new YourClass
    {
        StringProperty = ...,
        DateTimeProperty1 = ...,
        DateTimeProperty2 = ...
    })
    .ToList();

Это позволяет вам заявить о своих намерениях (создать список YourClass объектов из каждого item в dataViewer), не подчеркивая механику, стоящую заit (циклы и т. д.)

Редактировать: Если вам не нужен список, просто последовательность, это также выглядит хорошо, используя синтаксис запроса (то же значение):

var yourClasses =
    from item in dataViewer
    select new YourClass
    {
        StringProperty = ...,
        DateTimeProperty1 = ...,
        DateTimeProperty2 = ...
    };
6 голосов
/ 11 ноября 2011

Может быть, что-то вроде этого

var list = new List<YourClass>();

foreach(var item in dataViewer) {
    var cls = new YourClass();
    // Assign variables here
    // cls.Test = item.Test;

    list.Add(cls);
}
3 голосов
/ 11 ноября 2011

Попробуйте это:

public class YourClass
{
    public string YourString {get; set;}
    public DateTime YourDate1 {get; set;}
    public DateTime YourDate2 {get; set;}

    public YourClass(string s, DateTime d1, DateTime d2)
    {
        YourString = s;
        YourDate1 = d1;
        YourDate2 = d2;
    }
}

public List<YourClass> Read()
{
    List<YourClass> list = new List<YourClass>();
    foreach(var item in dataViewer)
        list.Add(new YourClass(s,d1,d2)); // Read variables from item...
    return list;
}
1 голос
/ 11 ноября 2011
public class Foo
{
    public Foo(string name, DateTime dt1, DateTime dt2)
    {
        Name = name;
        DT1 = dt1;
        DT2 = dt2;
    }

    public string Name { get; set; }
    public DateTime DT1 { get; set; }
    public DateTime DT2 { get; set; }
}

public class Example
{
    public List<Foo> example(DataView dataViewer)
    {
        var foos = new List<Foo>();        

        foreach(var data in dataViewer)
        {
            foos.Add(new Foo(data.Name, data.DT1, data.DT2);
        }

        return foos;
    }
}
1 голос
/ 11 ноября 2011
public class Appropriate
{
    public string Value { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}

IList<Appropriate> list = new List<Appropriate>();

foreach(var item in dataViewer) {
    list.Add(new Appropriate() {
        Value = item["value"],
        Start = item["start"],
        End = item["end"]
    });
}

IList<Appropriate> list = new List<Appropriate>();

dataViewer.ToList().ForEach(i => list.Add(new Appropriate() {
    Value = item["value"],
    Start = item["start"],
    End = item["end"]
});
...