Как получить результат группировки в виде списка из перечислимого списка?

Как получить уникальные записи из списка?

public class VinDecoded
{
    public string SquishVin {get;set;} = "";
    public string Year {get;set;} = "";
    public string Make {get;set;} = "";
}
var modelVinDecodeds = new List<VinDecoded>();

modelVinDecodeds.Add(new VinDecoded() {SquishVin="1234",Year="2007",Make="Ford"});
modelVinDecodeds.Add(new VinDecoded() {SquishVin="2233",Year="2010",Make="Chevy"});
modelVinDecodeds.Add(new VinDecoded() {SquishVin="2233",Year="2010",Make="GMC"});

В этом случае я хочу получить кастом List<VinDecoded>() имея только соответствующий SquishVin "2233".

Это я попробовал, которые не работают. Я получаю ключ, а не список. Я хочу только List<VinDecoded>() данные, где нет списка.

var modelCustomVinDecoded = modelVinDecodeds.GroupBy(x => x.SquishVin).ToList();

foreach(var v in modelCustomVinDecoded)
{
    if (v.Key != "0033")
    {
         FooSave(v.???);   //Where's the list coming from the v part?
    }
}

1 ответ

Решение

GroupBy(x => x.SquishVin) вернет IEnumerable<IGrouping<string, VinDecoded>> а также IGrouping<string, VinDecoded> иметь свойство под названием Key, возвращающее SquishVin в целом VinDecoded объекты в группе. Также IGrouping<string, VinDecoded> является IEnumerable<VinDecode>, так что вы можете повторить его или просто преобразовать в список.

Вы можете сделать это:

var modelCustomVinDecoded = modelVinDecodeds.GroupBy(x => x.SquishVin).ToList();

foreach(var v in modelCustomVinDecoded)
{
    if (v.Key != "0033")
    {
        FooSave(v.ToList());
    }
}
Другие вопросы по тегам