Отображение полей с одинаковыми идентификаторами guid вместе

У меня есть список типа ProductDetailDTO.

List<ProductDetailDTO> productDTOs;

public class ProductDetailDTO
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }
    public byte[] Image { get; set; }
    public string Description { get; set; }
    public string Brand { get; set; }
    public string GUID { get; set; }
    public string VariantName { get; set; }
    public string VariantValue { get; set; }
    public decimal Price { get; set; }
}

Я использовал linq для привязки данных к списку.

var productDetails = (from product in ekartEntities.Products
                                  join productImage in ekartEntities.ProductImages on product.ProductId equals productImage.ProductId
                                  join category in ekartEntities.ProductCategories on product.Category equals category.CategoryId
                                  join mapping in ekartEntities.ProductVariantMappings on product.ProductId equals mapping.ProductId
                                  join variant in ekartEntities.ProductVariants on mapping.ProductVariantId equals variant.ProductVariantId
                                  join inventory in ekartEntities.Inventories on mapping.GUID equals inventory.Guid
                                  where product.ProductId == productDetailDTO.ProductId
                                  select new ProductDetailDTO()
                                  {
                                      ProductId = product.ProductId,
                                      Name = product.Name,
                                      Category = category.Name,
                                      Description = product.Description,
                                      Brand = product.Brand,
                                      Image = productImage.Image,
                                      GUID = mapping.GUID.ToString(),
                                      VariantName = variant.Name,
                                      VariantValue = mapping.Value,
                                      Price = inventory.Price
                                  }).ToList();

Теперь я хочу отобразить все варианты (VariantName и VariantValue) с одинаковыми идентификаторами GUID вместе. Как я могу этого добиться?

как вы привязывали данные к списку?

Udara Kasun 10.09.2018 08:48

Что вы имеете в виду под точно, когда говорите "отображать поля вместе"?

Lasse V. Karlsen 10.09.2018 08:49

@UdaraKasun Использование linq. Обновил пост!

Suyash Gupta 10.09.2018 08:49

@ LasseVågsætherKarlsen Я хочу отображать столбцы списка на основе столбца того же списка.

Suyash Gupta 10.09.2018 08:52

вы пытались сгруппировать по графическому интерфейсу

Udara Kasun 10.09.2018 08:53

@UdaraKasun Я не могу. У меня есть и другие поля для выбора. Это не позволит мне группировать только по GUID.

Suyash Gupta 10.09.2018 08:56

@Bizhan Как я могу использовать groupby только по GUID, когда у меня много других столбцов в предложении select?

Suyash Gupta 10.09.2018 08:58

Значит, вы хотите переставить столбцы?

Lasse V. Karlsen 10.09.2018 09:12

@ LasseVågsætherKarlsen Да.

Suyash Gupta 10.09.2018 09:20
1
9
95
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать Group By

group p by p.GUID into g
select new { Id = g.Key, ProductDetail = g.ToList()).ToList();

Если у вас есть таблицы до группировки, вы можете добавить новый объект в саму группу

group new { p.xyz, n.xyz }
by new { p.GUID } into g

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

Ответ принят как подходящий

Вы можете использовать GroupBy и Select следующим образом:

 var variants = productDTOs
                   .GroupBy(k => k.GUID)
                   .Select(v => v
                         .Select(variant => new 
                         {
                             variant.VariantName, 
                             variant.VariantValue
                         }));

Могу ли я объединить эти варианты с моим существующим списком productDTOs? Или я могу выполнить группировку во время получения других значений из базы данных в productDTOs?

Suyash Gupta 10.09.2018 10:07

Вы можете сделать и то, и другое.

Bizhan 10.09.2018 16:26

Другие вопросы по теме