0

我在 Telerik OpenAccess 生成的数据模型上使用 LINQ 来设置搜索查询并获取结果。这一切都很好,代码看起来非常好。但现在我需要再添加一件事,我不知道该怎么做。我选择的产品应该为每个客户提供不同的价格。价格取决于其他 2 个 SQL 表中的一些其他值。现在我在 SQL 标量函数中有价格计算,但我不确定如何将它与我的 LINQ 结合使用。

我的目标是在一次数据库往返中检索所有数据,并能够对这个计算出的价格列进行排序。

现在我有类似的东西:

var products = (from p in Products select p);
if(searchOption)
   products = products.Where(product => product.Name.Contains(searchOption));
products = products.OrderByDescending(product => product.Name);
products = products.Skip(pageNr * pageSize).Take(pageSize);

当然,我可以使用我的 Product 类的所有属性,但我希望能够使用新的虚拟/计算属性,比如说:Product.CalculatedPrice 。

我有一种感觉,它应该看起来有点像这样。

(from p in Products
select new {
    productId = p.ProductId,
    name = p.Name,
    calculatedPrice = CalculatedValueFromStoredProcedure/OrScalarFunction(p.ProductId, loggedInCustomerId)
});

最好的问候, Tys

4

2 回答 2

1

.Select()允许您创建一个动态类型,您可以在其中使用计算出的价格扩展产品

    products.Select(i => new { Product = i, CalculatedPrice = 100})   

或在您的初始行中:

    var products = (from p in Products select new { Product = p, CalculatedPrice = 100 }); 
于 2011-08-16T11:59:57.947 回答
1

在做了更多研究之后,我发现我想做的事情不可能与 Telerik OpenAccess ORM 结合使用!因此,我创建了一种解决方法,可以预先计算我需要的值,将它们放在一个表中,然后将我的选择与该表的内容连接起来。目前,这是我找到的最好的解决方案。

于 2011-08-20T17:15:55.697 回答