0

このc#コードでは、userName値を文字列からint型に変換する必要があります。誰か知っていますか私を助けてください。このような「デリゲート型ではないため、ラムダ式を型'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);
                }
            }
        }

前もって感謝します。

4

1 に答える 1

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); 
            } 
        } 
    } 
于 2012-04-04T09:30:59.593 に答える