铸造iqueryable

时间:2011-05-27 11:08:17

标签: iqueryable

我如何投射到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);

错误:无法使用已在使用的密钥添加实体。

1 个答案:

答案 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。