我在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
答案 0 :(得分:1)
.Select()允许您创建动态类型,您可以使用计算出的价格扩展产品
products.Select(i => new { Product = i, CalculatedPrice = 100})
或在您的初始行:
var products = (from p in Products select new { Product = p, CalculatedPrice = 100 });
答案 1 :(得分:1)
在做了一些研究之后,我发现我想要做的事情不可能与Telerik OpenAccess ORM结合使用!所以我创建了一个解决方法,预先计算我需要的值,将它们放在一个表中,并将我的选择与该表的内容结合起来。 就目前而言,这是我找到的最佳解决方案。