以下是我的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)
}
i无法过滤DAL层中的属性,因为此方法是从多个位置调用的&不同的呼叫需要不同的属性。
我尝试了下面的东西。
var products = dalLayer.GetProductsList().Select(
(x, y) => new
{
x.Id,
y.Name
});
但这也会抛出编译时间错误
那么,如何使用select()
??
谢谢。
尝试以下
var products = dalLayer.GetProductsList().Select(
pr => new
{
Id =pr.Id,
EndDate =pr.EndDate,
StartDate=pr.Startdate,
});
但是请注意,您正在创建一个匿名对象
update
,或者如果您不想要匿名对象,只需创建一个视图
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,
});
您可以使用元组。
C#7元组之前。
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新功能
var products = dalLayer.GetProductsList().Select(x => Tuple.Create(x.PId, x.Name));
foreach(var (PId, Name) in products)
{
Console.WriteLine(PId);
Console.WriteLine(Name);
}