1

3つのテーブルからAmountの合計を取得するために使用する、このストーリングされた手順があります。

問題は、Linq to Sqlを使用していて、このプロシージャを.dbmlファイルに配置すると、ISingleResult(GetSurplusDataForConsolidationReportResult)があり、必要な合計を取得できないことです。

空のReceivablesSurplusリストを受け取っています。

何か案は?

ALTER PROCEDURE [dbo].[GetSurplusDataForConsolidationReport]
    @ID INT
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

          SELECT    SUM(RB.[Amount])
    FROM    [DBO].[ReceivablesSurplus] RB
    WHERE   RB.[Cycle] = @ID

    SELECT  SUM(DL.[Amount])
    FROM    [DBO].[DilutionsSurplus] DL
    WHERE   DL.[Cycle] = @ID

    SELECT  SUM(AC.[Amount])
    FROM    [DBO].[AccountablesSurplus] AC
    WHERE   AC.[Cycle] = @ID
END

これは私の.dbmlコードです

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.GetSurplusDataForConsolidationReport")]
        public ISingleResult<GetSurplusDataForConsolidationReportResult> GetSurplusDataForConsolidationReport([global::System.Data.Linq.Mapping.ParameterAttribute(Name="ID", DbType="Int")] System.Nullable<int> iD)
        {
            IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), iD);
            return ((ISingleResult<GetSurplusDataForConsolidationReportResult>)(result.ReturnValue));
        }
4

1 に答える 1

0

コードの呼び出し行に対して.ToList()値を ( ISingleResultimplementsとして)使用できるようにするだけで、sproc から返される個別の結果セットを取得できます。IEnumerable

例えば

var results = dataContext.GetSurplusDataForConsolidationReport(123).ToList<int>(); // list of sums
于 2012-10-15T21:50:29.350 に答える