В WEBAPI REST как использовать DTO и LINQ - PullRequest
0 голосов
/ 21 февраля 2019

Как должен выполняться запрос нескольких объектов или объектов с помощью DTO и LINQ?

Я разрабатываю WEBAPI REST, где у меня есть три объекта: Product, Category и Supplier.

У каждого есть свой ключ и взаимосвязь между каждым делом.Supplier => Product => Category

Как создать запрос для Product = 'Car', Supplier = 'Ford' и Category = 'Truck', используя LINQ, который создает List<> который может быть возвращен вызывающей стороне - тип данных List должен быть DTO с теми же 3 столбцами, что и значения фильтра (Product, Supplier, Category)?

Пожалуйста, не могли бы вы рассказать мне, как я должен это сделать, на примере.

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Трудно сказать точно, как использовать LINQ в вашей ситуации, так как отношения между классами не очень ясны, поэтому я дам вам ответ, используя только объект Product.Я могу обновить свой ответ, если вы дадите мне больше информации.

var listOfSomethingDto = listOfProducts      //list of products should come from a repository or something similar
    .Where(product => product.Name == "Car") //WHERE:  get products with name equal to what you want
    .Select(product => new SomethingDto      //SELECT: for every product found with the .Where clause
        {                                    //        transform it in a new SomethingDto where the Product is the name of the product found
            Product = productName
        }
).ToList();

Чтобы отфильтровать Supplier и Category, вам необходимо включить их (аналогично Product) в запрос LINQ.уважая отношения между классами.

В этом примере SomethingDto (переименуйте его в соответствии с вашим сценарием) можно определить как:

public class SomethingDto
{
    public string Product { get; set; }
}

Или, в вашем случае, со всемиАтрибуты:

public class SomethingDto
{
    public string Product { get; set; }
    public string Supplier { get; set; }
    public string Category { get; set; }
}

Как видите, DTO - это новый тип объекта, используемый для передачи данных из одной точки в другую без фактического использования базовых классов.

...