我如何投射到cartItem?
var newItem = from i in dc.CartItems
where i.productID == item.productID
select new {productID = i.productID,
Quantity = i.Quantity + item.Quantity ,
cartID = item.cartID };
CartItem itemToUpdate = (here??)newItem;
dc.CartItems.Attach(itemToUpdate, true);
下一个解决方案给了我这个错误>
List<CartItem> newItem = (from i in dc.CartItems
where i.productID == item.productID
select new {productID = i.productID,
Quantity = i.Quantity + item.Quantity ,
cartID = item.cartID }).Cast<CartItem>().ToList();
CartItem itemToUpdate = newItem.First();
dc.CartItems.Attach(itemToUpdate, true);
错误:类型'&lt;&gt; f__AnonymousType2`3 [System.Int32,System.Int32,System.String]'和'CartItem'之间没有定义强制运算符。
这段代码怎么样:这也是错误
if (IfExist(item))
{
//if this product id in cart
// get the quantity of existing cartItem
int quantity = (from i in dc.CartItems
where i.productID == item.productID
select i).First().Quantity;
// sum quanitities of existing and just inserted item
item.Quantity += quantity;
dc.CartItems.Attach(item, true);
错误:无法使用已在使用的密钥添加实体。
答案 0 :(得分:1)
直接投射并不可行 - 你可能想让SELECT创建一个新的CartItem而不是匿名类型。
编辑:我的意思是,尝试类似的事情:
List<CartItem> newItem = (from i in dc.CartItems
where i.productID == item.productID
select new CartItem {productID = i.productID,
Quantity = i.Quantity + item.Quantity ,
cartID = item.cartID })
CartItem itemToUpdate = newItem.First();
dc.CartItems.Attach(itemToUpdate, true);
这假设您的CartItem类有一个空构造函数 - 显然您可以根据需要调整SELECT。