nik varma Ответов: 1

Как назначить многоуровневое свойство в списке C#?


public class country {
    public int id {get;set;}
    public string name {get;set;}
    public int Lats {get;set;}
    public int Longs {get;set;}
    public List<states> states {get;set;}
}

public class states {
    public int id {get;set;}
    public string name {get;set;}
    public int Lats {get;set;}
    public int Longs {get;set;}
    public id countryid {get;set;}
    public List<citys> citys {get;set;}
}


public class citys {
    public int id {get;set;}
    public string name {get;set;}
    public id countryid {get;set;}
    public id stateid {get;set;}
}


//-------------

//Data Access

public DataTable getCountry(){
    DataTable dt = new DataTable();
    _conn = new Connetion();
    using(_cmd = new SqlCommand()){
        ------param------------
        using(SqlDataAdepter da = new SqlDataAdepter(_cmd)){
            da.Fill(dt)
        }
    }
    return dt;
}


public DataTable getStates(){
    DataTable dt = new DataTable();
    _conn = new Connetion();
    using(_cmd = new SqlCommand()){
        ------param------------
        using(SqlDataAdepter da = new SqlDataAdepter(_cmd)){
            da.Fill(dt)
        }
    }
    return dt;
}


public DataTable getCity(){
    DataTable dt = new DataTable();
    _conn = new Connetion();
    using(_cmd = new SqlCommand()){
        ------param------------
        using(SqlDataAdepter da = new SqlDataAdepter(_cmd)){
            da.Fill(dt)
        }
    }
    return dt;
}

//-------------

//Method

public void AllLists() {
    DataTable dt = new DataTable();
    country c = new country();
    dt = getCountry();
    country = (from DataRow dr in dt.Rows
        select new country(){
            countryid = dr["id"],
            states = ------how to add a states----,
            states.citys = ------------how to add citys-----
        });
}


ниже приведен формат, как я хочу получить данные
в формате json

country: {
    id : "",
    name : "",
    Lats : "",
    Longs : "",
    states : {
        id : "",
        name : "",
        Lats : "",
        Longs : "",
        citys : {
            id : "",
            name ; "",
            countryid : "",
            stateid : ""
        }
    },
country: {
    id : "",
    name : "",
    Lats : "",
    Longs : "",
    states : {
        id : "",
        name : "",
        Lats : "",
        Longs : "",
        citys : {
            id : "",
            name ; "",
            countryid : "",
            stateid : ""
        }
    }
}

}


Что я уже пробовал:

public class country {
    public int id {get;set;}
    public string name {get;set;}
    public int Lats {get;set;}
    public int Longs {get;set;}
    public List<states> states {get;set;}
}

public class states {
    public int id {get;set;}
    public string name {get;set;}
    public int Lats {get;set;}
    public int Longs {get;set;}
    public id countryid {get;set;}
    public List<citys> citys {get;set;}
}


public class citys {
    public int id {get;set;}
    public string name {get;set;}
    public id countryid {get;set;}
    public id stateid {get;set;}
}


//-------------

//Data Access

public DataTable getCountry(){
    DataTable dt = new DataTable();
    _conn = new Connetion();
    using(_cmd = new SqlCommand()){
        ------param------------
        using(SqlDataAdepter da = new SqlDataAdepter(_cmd)){
            da.Fill(dt)
        }
    }
    return dt;
}


public DataTable getStates(){
    DataTable dt = new DataTable();
    _conn = new Connetion();
    using(_cmd = new SqlCommand()){
        ------param------------
        using(SqlDataAdepter da = new SqlDataAdepter(_cmd)){
            da.Fill(dt)
        }
    }
    return dt;
}


public DataTable getCity(){
    DataTable dt = new DataTable();
    _conn = new Connetion();
    using(_cmd = new SqlCommand()){
        ------param------------
        using(SqlDataAdepter da = new SqlDataAdepter(_cmd)){
            da.Fill(dt)
        }
    }
    return dt;
}

//-------------

//Method

public void AllLists() {
    DataTable dt = new DataTable();
    country c = new country();
    dt = getCountry();
    country = (from DataRow dr in dt.Rows
        select new country(){
            countryid = dr["id"],
            states = ------how to add a states----,
            states.citys = ------------how to add citys-----
        });
}


ниже приведен формат, как я хочу получить данные
в формате json

страна: {
идентификатор : "",
имя : "",
Латы : "",
Долгое время : "",
состояния : {
идентификатор : "",
имя : "",
Латы : "",
Долгое время : "",
города : {
идентификатор : "",
имя ; "",
countryid : "",
stateid : ""
}
}
}

Patrice T

Что такое "многоуровневое свойство"?

nik varma

внутри класса их два списка, в которых я хочу связать данные, как показано в свойстве вложенный список, пожалуйста, проверьте вывод, который я хочу

пожалуйста, помогите, если вы знаете

1 Ответов

Рейтинг:
2

David_Wimbley

Так что, во-первых, ваш ожидаемый JSON искажен. Вот пример вашего ожидаемого результата

{ "country": {
    "id" : "",
    "name" : "",
    "Lats" : "",
    "Longs" : "",
    "states" : [{
        "id" : "",
        "name" : "",
        "Lats" : "",
        "Longs" : "",
        "citys" : {
            "id" : "",
            "name" : "",
            "countryid" : "",
            "stateid" : ""
            }
        },{
        "id" : "",
        "name" : "",
        "Lats" : "",
        "Longs" : "",
        "citys" : {
            "id" : "",
            "name" : "",
            "countryid" : "",
            "stateid" : ""
            }
        }]
    },
"country": {
    "id" : "",
    "name" : "",
    "Lats" : "",
    "Longs" : "",
    "states" : [{
        "id" : "",
        "name" : "",
        "Lats" : "",
        "Longs" : "",
        "citys" : {
            "id" : "",
            "name" : "",
            "countryid" : "",
            "stateid" : ""
            }
        },{
        "id" : "",
        "name" : "",
        "Lats" : "",
        "Longs" : "",
        "citys" : {
            "id" : "",
            "name" : "",
            "countryid" : "",
            "stateid" : ""
            }
        }]
    }
}


Тогда ваша классовая структура должна быть следующей

public class Citys
{
    public string id { get; set; }
    public string name { get; set; }
    public string countryid { get; set; }
    public string stateid { get; set; }
}

public class State
{
    public string id { get; set; }
    public string name { get; set; }
    public string Lats { get; set; }
    public string Longs { get; set; }
    public Citys citys { get; set; }
}

public class Country
{
    public string id { get; set; }
    public string name { get; set; }
    public string Lats { get; set; }
    public string Longs { get; set; }
    public List<state> states { get; set; }
}

public class RootObject
{
    public Country country { get; set; }
}
</state>


Я предлагаю вам использовать JSON.NET библиотека (newtonsoft) для сериализации/десериализации вашего json.

Для получения дополнительной информации о JSON.net смотрите эту ссылку: Json.NET - Newtonsoft[^]

Оттуда вы можете просто использовать классы C#, присваивать значения любым свойствам, которые вы хотите, и когда вы будете готовы преобразовать их в JSON, вы просто используете
string json = JsonConvert.SerializeObject(model);


nik varma

Спасибо Дэвид, пожалуйста, не могли бы вы сказать мне, как я могу привязать данные из базы данных, как я уже упоминал выше, как я пытаюсь сейчас.. Это правильный путь, то, что я пытаюсь?

David_Wimbley

Вы можете получить свои данные из базы данных, как вам заблагорассудится. Есть масса способов сделать это, независимо от того, каким образом вы должны идти навстречу своим потребностям. Я, например, предпочитаю entity framework.

Все, что вам нужно сделать, это начать присваивать значения свойствам классов, создавая экземпляры своих классов и назначая значения как обычно. Короче показывает вам, как говорят var obj = new Object (); obj.Имя = " Дэвид"; Я не знаю, что еще ты хочешь знать.