2012-04-04 283 views
0

在此c#代码中,我需要将userName值从字符串转换为int类型。 有谁知道请帮助我。我有一个编译错误错误“无法将lambda表达式转换为'int'类型,因为它不是”委托类型“,就像这样。无法将lambda表达式转换为类型'int',因为它不是委托类型

 ShoppingCartPartRecord cartRecord = null; 
     try { 
      cartRecord = _shoppingCartRepository.Get(r => r.Username == userName); 
     } 
     catch (InvalidOperationException ex) { 
      if (ex.Message == "Sequence contains more than one element") { 
       var badCarts = _shoppingCartRepository.Table.Where(x => x.Username == userName); 
       foreach (var shoppingCartPartRecord in badCarts) { 
        _shoppingCartRepository.Delete(shoppingCartPartRecord); 
       } 
      } 
     } 

在此先感谢您。

+1

什么是'_shoppingCartRepository'类型,我猜Get方法需要一个int。你需要'_shoppingCartRepository.Table.First(r => r.Username == userName)'? – 2012-04-04 08:47:10

+0

什么是Get?这是_shoppingCartRepository的一种方法吗? – Habib 2012-04-04 08:50:38

+0

是的,我需要将int方法分配给Get方法。但是这不起作用。 – Leo 2012-04-04 08:53:12

回答

1

如果没有源代码库,我们只能猜测这些方法是干什么的。

从你所描述的get函数中的错误期待或者索引到一个数组或一个整数主键,所以是错误的函数

您应该可以修改代码如下,以达到预期的效果

ShoppingCartPartRecord cartRecord = null; 
    try { 
     cartRecord = _shoppingCartRepository.Table.Single(r => r.Username == userName); 
    } 
    catch (InvalidOperationException ex) { 
     if (ex.Message == "Sequence contains more than one element") { 
      var badCarts = _shoppingCartRepository.Table.Where(x => x.Username == userName); 
      foreach (var shoppingCartPartRecord in badCarts) { 
       _shoppingCartRepository.Delete(shoppingCartPartRecord); 
      } 
     } 
    } 
相关问题