在WEBAPI REST中如何使用DTO和LINQ

时间:2019-02-20 22:57:07

标签: c# linq rest asp.net-web-api dto

如何使用DTO和LINQ对几个实体或对象进行查询?

我正在开发一个WEBAPI REST,其中有三个实体:ProductCategorySupplier

每个案例都有其关键以及每个案例之间的关系。 Supplier => Product => Category

我如何使用LINQ创建Product ='Car',Supplier ='Ford'和Category ='Truck'的查询,该查询创建一个List<>并可以返回给调用者- List数据类型应该是DTO,且其三列与过滤器值(ProductSupplierCategory)相同?

请,请举例说明一下我该怎么做。

谢谢

1 个答案:

答案 0 :(得分:0)

由于类之间的关系不是很清楚,因此很难确切地说出如何使用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();

要过滤SupplierCategory,您需要在LINQ查询中包括它们(以与Product类似的方式),以尊重类之间的关系。

在此示例中,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是一种新型对象,用于在不实际使用基类的情况下将数据从一个点传输到另一个点。