Как получить список кодов атрибутов для каждого элемента?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить список кодов атрибутов для каждого элемента?

Сообщение Anonymous »

Я пишу конечную точку веб-API, данные поступают из SQL Server и использую EF Core 8.0.
У меня есть таблица продуктов и еще одна таблица, которая сопоставляет коды продуктов с атрибутами продуктов (один ко многим) с помощью этих моделей:

Код: Выделить всё

public class Product
{
public string Code { get; set; }
public string Name { get; set; }
public decimal CatalogPrice { get; set; }
}

public class ProductAttribute
{
public string ProductCode { get; set; }
public string AttributeCode { get; set; }   // like "new", "sale", ...
public DateTime ValidFrom { get; set; }
public DateTime ValidTo { get; set; }
}
И в DbContext:

Код: Выделить всё

public DbSet Products { get; set; }
public DbSet ProductAttributes { get; set; }
Я хочу получить результат в виде

Код: Выделить всё

public class Product2
{
public string Code { get; set; }
public string Name { get; set; }
public decimal CatalogPrice { get; set; }

public List? Attributes { get; set; } // the list of attribute codes
}

public DbSet Products2 { get; set; }
Атрибуты действительны только в течение определенного периода времени, и я хочу, чтобы позже отображалась только часть продуктов — то есть пропустить некоторые элементы и взять количество элементов.
У меня нет проблем с получением страницы для продуктов. Проблема заключается в том, чтобы передать страницу Products2 со списком атрибутов для каждого продукта. Я не знаю, как это сделать. Я безуспешно играл с...

Код: Выделить всё

DateTime now = DateTime.Now;

var products2 = dbContext.Products
.GroupJoin(dbContext.ProductAttributes,
p => p.Code,
a => a.ProductCode,
(p, a) = new Product2
{
Code = p.Code,
Name = p.Name,
CatalogPrice = p.CatalogPrice,
Attributes = ??? .Where(a => a.ValidFrom 

Подробнее здесь: [url]https://stackoverflow.com/questions/79834938/how-to-get-the-list-of-attribute-codes-for-each-item[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»