2017-03-17 2 views
-1
decimal dpmo = notMet + notMet * 100;  
decimal ans = Summary_Matrics_Client.getall(dpmo); 

here I am calling LINQ functionオーバーロードされたメソッドの試合はここで無効な引数

public static decimal getall(ref decimal? number) 
{ 
    var sigma = from p in db.getDPMO(ref number) 
       select p.Sigma.Value; 
    return sigma.SingleOrDefault(); 

} 

getDPMO is stored procedure which is :

ALTER PROCEDURE getDPMO 

    (
    @number decimal OUTPUT 
    ) 

AS 
    select 
min(Sigma_Value) as Sigma 
    from 
Sigma_Table 
    where Defect_Rate < @number 

    RETURN 

I am getting error: (ref? decimal) has invalid argument while calling getall()

+2

パラメータの前に 'getall(dpmo)'を呼び出すには、おそらく 'ref'を追加する必要があります。 – MaKCbIMKo

+0

私は試しましたが、うまくいきませんでした –

答えて

1

は間違いありました:

decimal ans = Summary_Matrics_Client.getall(dpmo); 

あなたが参照することにより、それを渡す必要がありますあなたが012で定義したように通話中refキーワードを追加する必要があるので、それは、参照によってパラメータを取るのメソッドのシグネチャ:

decimal ans = Summary_Matrics_Client.getall(ref dpmo); 

をあなたが実際に参照することによって、それを渡す必要はありませんちなみには、ちょうど、する必要はありません

public static decimal getall(decimal? number) 

、その後の呼び出し:私はgetDPMOrefキーワードすなわち(参照することによりPAS)でパラメータを期待している場合であるかもしれないあなたが再び参照渡しされているgetallの実装では見ることができますが、のようなことを簡単にあなたが今書いたとおりになります:

decimal ans = Summary_Matrics_Client.getall(dpmo); 
+0

ありがとうございましたそれは働いています! –

+0

getall()LINQ関数でSigmaのnull値がある場合はどうなりますか?なぜなら私は次のようになっているからです:ヌル値のためにヌル値オブジェクトに値がなければならない –

+0

ストアドプロシージャのパラメータはヌル値ではありませんが、ヌル値を渡しているのでC#側からはストアドプロシージャコール失敗すると、nullが来ることを期待していないので、おそらくストアドプロシージャのパラメータをオプションにする必要があります –

関連する問題