如何使用DTO和LINQ对几个实体或对象进行查询?
我正在开发一个WEBAPI REST,其中有三个实体:Product
,Category
和Supplier
。
每个案例都有其关键以及每个案例之间的关系。 Supplier
=> Product
=> Category
我如何使用LINQ创建Product ='Car',Supplier ='Ford'和Category ='Truck'的查询,该查询创建一个List<>
并可以返回给调用者-
List
数据类型应该是DTO,且其三列与过滤器值(Product
,Supplier
,Category
)相同?
请,请举例说明一下我该怎么做。
谢谢
答案 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();
要过滤Supplier
和Category
,您需要在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是一种新型对象,用于在不实际使用基类的情况下将数据从一个点传输到另一个点。