以下是我的DTO。
public class Product
{
public int PId { get; set; }
public decimal Price { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
//& so on
}
获取产品列表的方法。
public void GetProducts()
{
// below dal method returns collection of products.
// I am in need to select only few properties of the Product Entitiy
var product = dalLayer.GetProductsList().Select(x => x.PId, y => y.Name)
}
我无法过滤DAL图层中的属性,因为此方法是从多个位置调用的。不同的电话需要不同的属性。
我试过以下的东西。
var products = dalLayer.GetProductsList().Select(
(x, y) => new
{
x.Id,
y.Name
});
但这也引发编译时错误
所以如何使用select()
??
感谢。
答案 0 :(得分:1)
尝试以下
var products = dalLayer.GetProductsList().Select(
pr => new
{
Id =pr.Id,
EndDate =pr.EndDate,
StartDate=pr.Startdate,
});
但请注意您正在创建一个匿名对象
更新
或者,如果您不想要匿名对象,只需创建一个视图
public class ProductViewDto
{
public int Id{get;set;}
public DateTime EndDate {get;set;}
public DateTime StartDate{get;set;}
}
var products = dalLayer.GetProductsList().Select(
pr => new ProductViewDto
{
Id =pr.Id,
EndDate =pr.EndDate,
StartDate=pr.Startdate,
});
答案 1 :(得分:0)
你可以使用元组。
在C#7之前tuples。
var products = dalLayer.GetProductsList().Select(x => Tuple.Create(x.PId, x.Name));
foreach(var p in products)
{
Console.WriteLine(p.Item1);
Console.WriteLine(p.Item2);
}
使用C#7。C# 7 new Features
var products = dalLayer.GetProductsList().Select(x => Tuple.Create(x.PId, x.Name));
foreach(var (PId, Name) in products)
{
Console.WriteLine(PId);
Console.WriteLine(Name);
}