在Linq to Entities中动态构造选择字段

时间:2013-07-04 23:54:26

标签: c# entity-framework select linq-to-entities ef-database-first

在我的简单数据库第一个实体框架场景中,我的客户已为其分配了价目表编号。另一方面,有一个产品表,其中有7个价格列对应于价格表,例如PR_1,PR_2,PR_3等

我想对一些属性进行投影。问题是其中一个属性/字段取决于客户的价目表编号,因此需要动态构建。因此,如果价格表编号为2,那么要使用的属性是PR_2,依此类推。

public IList<Product> GetSalesList(int customerId)
{
    Customer customer = this.customerService.Get(customerId);

    var products = this.productRepository.GetAll().OrderBy(p => p.ProductCode)
            .Select(p => new Product
            {
                Id = p.Id,
                ProductCode = p.ProductCode,
                Description = p.Description,
                PricingTypeCode = p.PricingTypeCode,
                Quantity = 0,
                SalesPrice = <<PR_ + customer.PricelistNumber.ToString()>> 
             }).ToList();

    return products;
}

我读过关于DLINQ但我不想使用那个原因我认为这只是一个例外。

有人能指出正确的方向,还是有人为此做出解决方案?

1 个答案:

答案 0 :(得分:0)

我会将所有价格存储在Product中,然后使SalesPrice成为根据客户的价目表编号计算销售价格的方法。

类似的东西:

public decimal SalesPrice(Customer customer)
{
    return prices[customer.PriceListNumber - 1];
}