Используйте многопольный список <> из десериализованного XML-файла, чтобы заполнить второй список из одного поля (Xamarin) - PullRequest
0 голосов
/ 26 ноября 2018

Это должно быть так просто ... в T-SQL это заняло бы у меня секунду.

Прежде чем я получу повторяющиеся флаги ... Я пытался опубликовать несколько похожих проблем, и я часами занимался этим, возился с различными ответами, связанными с JTokens, меняя на IEnumerable, десериализовывая одно поле только для того, чтобы назвать несколько,Я продолжаю получать ошибки, такие как:

xamarin не может неявно преобразовать тип 'System.Collections.Generic.List в' System.Colletions.List

Я десериализовал XMLфайл в список следующим образом:

        var assembly = IntrospectionExtensions.GetTypeInfo(typeof(LoadResourceText)).Assembly;
        Stream stream = assembly.GetManifestResourceStream("papapp.WineCatInfo.xml");

        List<WineCategoryInfo> winecategoryinfos;
        using (var reader = new StreamReader(stream))
        {
            var serializer = new XmlSerializer(typeof(List<WineCategoryInfo>));
            winecategoryinfos = (List<WineCategoryInfo>)serializer.Deserialize(reader);
        }
        #endregion

        return winecategoryinfos;

Список, который он заполняет, определяется следующим образом:

public class WineCategoryInfo
    {
        public string WineTypeNo { get; set; }
        public string WineFamily { get; set; }
        public string MainStyle { get; set; }
        public string StyleType { get; set; }
        public string LengthCharacteristic { get; set; }
        public string RegionCommonAppelation { get; set; }
    }

Я бы хотел запрос на десериализованную дату для размещения всех значений одногоконкретное поле из вышеприведенного списка во второй список, определяемый так:

public class WineFamilies
    {    
        public string WineFamily { get; set; }    
    }

Может кто-нибудь объяснить мне, как этого добиться?

Большое спасибо.

1 Ответ

0 голосов
/ 26 ноября 2018

используйте LINQ

using System.Linq;

var family = (from x in winecategoryinfos select x.WineFamily).ToList<string>();

или для устранения дубликатов

var family = (from x in winecategoryinfos select x.WineFamily).Distinct().ToList<string>();

, если вы хотите использовать свой класс WineFamilies вместо строки, попробуйте

var family = (from x in winecategoryinfos select new WineFamilies() { WineFamily = x.WineFamily }).ToList();
...