создать подсписок в списке только для одного столбца - PullRequest
0 голосов
/ 05 мая 2020

У меня есть две sql записи с разными адресами, я пытаюсь сделать их одной записью, используя подсписок

public class spproperty
    {
        public string Name{ get; set; }
        public string Addr{ get; set; }
        public int ID{ get; set; }
    }


List<spproperty> lst = new List<spproperty>();
    lst = db.sp_getDetails(inputParameter).ToList();//gets result from stored procedure as in example

Пример:

Name         Addr              ID
John         Florida           234
John         Arizona           234

Ожидаемый результат в json из списка

[
  {
    "Name": "John",
    "Addresses" : {
    "Addr" : "Florida",
    "Addr" : "Arizona"
  },
    "ID": 234,
  }
]

Я пробовал в xelement с набором данных, он работал, любые предложения со списком

1 Ответ

1 голос
/ 05 мая 2020

Вы можете группировать по имени и идентификатору, а затем создать желаемый форматированный список с помощью linq. Я думаю, что следующий код будет работать для вашего сценария:

var desiredList = lst.GroupBy(x => new { Name = x.Name, ID = x.ID })
                     .Select(x => new
                     {
                         Name = x.FirstOrDefault().Name,
                         Addresses = x.Select(y => y.Addr).ToList(),
                         ID = x.FirstOrDefault().ID
                     }).ToList();

После этого вы можете преобразовать результат в Json, если хотите.

...