我将购物车数量与其他类别分开,如下所示。我想从List中包含的数量减少购物车数量。所以如何在查询中包含该数量。任何人请建议我。
//int quantityinshoppingcart = classes.ShoppingCart.checkingQuantity(CustomerId,ItemId);
//Binds the data to the repeater control
rptcontrol.DataSource = from p in l_List
select new
{
ItemId = p.ItemId,
ItemName = p.ItemName,
Quantity = p.Quantity,
//I want quantity as (Quantity = p.quantity - quantityinshoppingcart),
};
rptcontrol.DataBind();
答案 0 :(得分:5)
您可以在查询中使用let
关键字:
var q = from p in l_List
let quantityInShoppingCart = MethodThatGetsThisQuantity(p.ItemId)
let computedQuantity = p.Quantity - quantityInShoppingCart
select new { ItemId = p.ItemId,
ItemName = p.ItemName,
Quantity = computedQuantity
};
答案 1 :(得分:1)
你可以试试这个,如果l_List被完全加载就好了(即如果它试图在访问数据源时运行查询,则可能无法工作)。
//Binds the data to the repeater control
rptcontrol.DataSource = from p in l_List
select new
{
ItemId = p.ItemId,
ItemName = p.ItemName,
Quantity = p.Quantity - SampleProject._classes.ShoppingCart.checkingQuantity(CustomerId,p.ItemId)
};
答案 2 :(得分:1)
您是否尝试在您的Linq Expression中包含您的quantityinshoppingcart计算? 喜欢这个?
rptcontrol.DataSource = from p in l_List
select new
{
ItemId = p.ItemId,
ItemName = p.ItemName,
Quantity = p.Quantity - SampleProject._classes.ShoppingCart.checkingQuantity(CustomerId, p.ItemId),
//I want quantity as (Quantity = p.quantity - quantityinshoppingcart),
};
rptcontrol.DataBind();
根据购物车和l_List的相对尺寸以及访问购物车内容的成本,您可能希望在绑定期间使用预先构建的词典来快速访问购物车中的数量。
希望这会有所帮助